From 0a662f745c23e74efe9212cfc2857a8f14ad6a8a Mon Sep 17 00:00:00 2001 From: Aleksey Belouosv Date: Thu, 9 Aug 2018 14:59:10 +0300 Subject: [PATCH] add catalog deeplink tests --- map/map_tests/mwm_url_tests.cpp | 27 +++++++++++++++++++++++++ map/mwm_url.cpp | 3 +++ xcode/map/map.xcodeproj/project.pbxproj | 4 ++++ 3 files changed, 34 insertions(+) diff --git a/map/map_tests/mwm_url_tests.cpp b/map/map_tests/mwm_url_tests.cpp index 5c05a794b9..9477fff791 100644 --- a/map/map_tests/mwm_url_tests.cpp +++ b/map/map_tests/mwm_url_tests.cpp @@ -55,6 +55,7 @@ public: return m_m->GetUserMarkIds(type).size(); } + CatalogItem const & GetCatalogItem() const { return m_api.GetCatalogItem(); } vector GetRoutePoints() const { return m_api.GetRoutePoints(); } url_scheme::SearchRequest const & GetSearchRequest() const { return m_api.GetSearchRequest(); } string const & GetGlobalBackUrl() const { return m_api.GetGlobalBackUrl(); } @@ -139,6 +140,32 @@ UNIT_TEST(RouteApiSmoke) TEST(test.TestRouteType("vehicle"), ()); } +UNIT_TEST(CatalogueApiSmoke) +{ + string const uriString = "mapsme://catalogue?id=440f02e5-ff38-45ed-95c0-44587c9a5fc7&name=CatalogGroupName"; + TEST(Uri(uriString).IsValid(), ()); + + ApiTest test(uriString); + TEST(test.IsValid(), ()); + + auto const & catalogItem = test.GetCatalogItem(); + TEST_EQUAL(catalogItem.m_id, "440f02e5-ff38-45ed-95c0-44587c9a5fc7", ()); + TEST_EQUAL(catalogItem.m_name, "CatalogGroupName", ()); +} + +UNIT_TEST(CatalogueApiInvalidUrl) +{ + Framework f(kFrameworkParams); + TEST(!IsValid(f, "mapsme://catalogue?"), ("id parameter is required")); + TEST(IsValid(f, "mapsme://catalogue?id=440f02e5-ff38-45ed-95c0-44587c9a5fc7"), ("Name is optional")); + TEST(IsValid(f, "mapsme://catalogue?id=440f02e5-ff38-45ed-95c0-44587c9a5fc7&name=CatalogGroupName&otherExtraParam=xyz"), + ("We shouldn't fail on extra params")); + TEST(IsValid(f, "mapsme://catalogue?name=CatalogGroupName&id=440f02e5-ff38-45ed-95c0-44587c9a5fc7"), + ("parameter position doesn't matter")); + TEST(!IsValid(f, "mapsme://catalogue?ID=440f02e5-ff38-45ed-95c0-44587c9a5fc7"), + ("The parser is case sensitive")); +} + UNIT_TEST(SearchApiSmoke) { string const uriString = "mapsme://search?query=fff&cll=1,1&locale=ru&map"; diff --git a/map/mwm_url.cpp b/map/mwm_url.cpp index 393cbd94aa..258f00829a 100644 --- a/map/mwm_url.cpp +++ b/map/mwm_url.cpp @@ -278,6 +278,9 @@ ParsedMapApi::ParsingResult ParsedMapApi::Parse(Uri const & uri) if (!result) return ParsingResult::Incorrect; + if (item.m_id.empty()) + return ParsingResult::Incorrect; + m_catalogItem = item; return ParsingResult::Catalogue; } diff --git a/xcode/map/map.xcodeproj/project.pbxproj b/xcode/map/map.xcodeproj/project.pbxproj index d0fc064cc4..63203d9184 100644 --- a/xcode/map/map.xcodeproj/project.pbxproj +++ b/xcode/map/map.xcodeproj/project.pbxproj @@ -93,6 +93,7 @@ 45F6EE9D1FB1C77600019892 /* search_api.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45F6EE9A1FB1C77500019892 /* search_api.hpp */; }; 45F6EE9E1FB1C77600019892 /* mwm_tree.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45F6EE9B1FB1C77500019892 /* mwm_tree.hpp */; }; 45F6EE9F1FB1C77600019892 /* search_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45F6EE9C1FB1C77500019892 /* search_api.cpp */; }; + 475BD61B211C5FDC00E298C6 /* libshaders.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 475BD61A211C5FDC00E298C6 /* libshaders.a */; }; 47A9D82220A19E9E00E4671B /* libopen_location_code.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 47A9D82120A19E9E00E4671B /* libopen_location_code.a */; }; 47A9D82420A19EC300E4671B /* libkml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 47A9D82320A19EC300E4671B /* libkml.a */; }; 56C116602090E5670068BBC0 /* extrapolator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 56C1165E2090E5670068BBC0 /* extrapolator.cpp */; }; @@ -309,6 +310,7 @@ 45F6EE9A1FB1C77500019892 /* search_api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = search_api.hpp; sourceTree = ""; }; 45F6EE9B1FB1C77500019892 /* mwm_tree.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = mwm_tree.hpp; sourceTree = ""; }; 45F6EE9C1FB1C77500019892 /* search_api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = search_api.cpp; sourceTree = ""; }; + 475BD61A211C5FDC00E298C6 /* libshaders.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libshaders.a; sourceTree = BUILT_PRODUCTS_DIR; }; 47A9D82120A19E9E00E4671B /* libopen_location_code.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libopen_location_code.a; sourceTree = BUILT_PRODUCTS_DIR; }; 47A9D82320A19EC300E4671B /* libkml.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libkml.a; sourceTree = BUILT_PRODUCTS_DIR; }; 56C1165E2090E5670068BBC0 /* extrapolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = extrapolator.cpp; path = extrapolation/extrapolator.cpp; sourceTree = ""; }; @@ -480,6 +482,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 475BD61B211C5FDC00E298C6 /* libshaders.a in Frameworks */, 671ED39120D4046D00D4317E /* libeditor_tests_support.a in Frameworks */, 47A9D82420A19EC300E4671B /* libkml.a in Frameworks */, 47A9D82220A19E9E00E4671B /* libopen_location_code.a in Frameworks */, @@ -542,6 +545,7 @@ 34DDA17E1DBE5DF40088A609 /* Frameworks */ = { isa = PBXGroup; children = ( + 475BD61A211C5FDC00E298C6 /* libshaders.a */, 3DA5721D20C194B8007BDE27 /* libgenerator.a */, 3DA5721F20C194B8007BDE27 /* libopen_location_code.a */, 3DA5722120C194B8007BDE27 /* libopening_hours.a */,