From 2e1f7a507e066435f18bf8ce37aa07d072be8072 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Thu, 11 Jan 2018 13:58:56 +0300 Subject: [PATCH] [generator][ugc] Skip empty UGCs --- generator/generator_tests/ugc_test.cpp | 31 ++++++++++++++++++++------ generator/ugc_section_builder.cpp | 3 +++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/generator/generator_tests/ugc_test.cpp b/generator/generator_tests/ugc_test.cpp index 31426eebff..07a405dc47 100644 --- a/generator/generator_tests/ugc_test.cpp +++ b/generator/generator_tests/ugc_test.cpp @@ -8,16 +8,32 @@ #include "base/math.hpp" #include "base/osm_id.hpp" +namespace +{ std::string g_database(R"LLL( PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE ratings (key bigint, value blob); INSERT INTO "ratings" VALUES(9826352,'{"osm_id":9826352,"total_rating":10.34,"based_on":721,"ratings":[{"key":"2","value":3.4},{"key":"2","value":6.0001}],"reviews":[{"id":7864532, "text":{"text":"The best service on the Earth","lang":"en"},"author":"Robert","rating":8.5,"date":1234567}]}'); INSERT INTO "ratings" VALUES(9826353,'{"osm_id":9826353,"total_rating":0.34,"based_on":1,"ratings":[{"key":"2","value":3.4},{"key":"3","value":6.0001},{"key":"6","value":0.0001}],"reviews":[{"id":78645323924,"text":{"text":"Изумительно!","lang":"ru"},"author":"Вася","rating":10,"date":1234569}]}'); + INSERT INTO "ratings" VALUES(9826354,'{"osm_id":9826354,"total_rating":-1.0,"based_on":1,"ratings":[{"key":"2","value":3.4},{"key":"3","value":6.0001},{"key":"6","value":0.0001}],"reviews":[{"id":78645323924,"text":{"text":"Изумительно!","lang":"ru"},"author":"Вася","rating":10,"date":1234569}]}'); CREATE INDEX key_index ON ratings (key); COMMIT; )LLL"); +ugc::UGC GetUgcForId(uint32_t id) +{ + generator::UGCTranslator tr; + tr.CreateDb(g_database); + osm::Id osmId(id); + + ugc::UGC ugc; + bool rc = tr.TranslateUGC(osmId, ugc); + TEST(rc, ("Can't translate ugc for", osmId)); + + return ugc; +} + UNIT_TEST(UGC_SmokeTest) { generator::UGCDB db(":memory:"); @@ -31,15 +47,16 @@ UNIT_TEST(UGC_SmokeTest) UNIT_TEST(UGC_TranslateRatingTest) { - generator::UGCTranslator tr; - tr.CreateDb(g_database); - osm::Id id = osm::Id(9826352); - - ugc::UGC ugc; - bool rc = tr.TranslateUGC(id, ugc); - TEST(rc, ("Can't translate rating for", id)); + auto const ugc = GetUgcForId(9826352); TEST_EQUAL(ugc.m_ratings.size(), 2, ()); TEST_EQUAL(ugc.m_ratings[0].m_key, "2", ()); TEST(my::AlmostEqualAbs(ugc.m_ratings[0].m_value, 3.4f, 1e-6f), ()); } + +UNIT_TEST(UGC_TranslateEmptyUgcTest) +{ + auto const ugc = GetUgcForId(9826354); + TEST(ugc.IsEmpty(), ()); +} +} // namespace diff --git a/generator/ugc_section_builder.cpp b/generator/ugc_section_builder.cpp index 5ac3f3e7f3..9210b27732 100644 --- a/generator/ugc_section_builder.cpp +++ b/generator/ugc_section_builder.cpp @@ -53,6 +53,9 @@ bool BuildUgcMwmSection(std::string const & srcDbFilename, std::string const & m if (!translator.TranslateUGC(it->second, result)) return; + if (result.IsEmpty()) + return; + content.emplace_back(featureId, result); });