diff --git a/src/logic/logic_search.erl b/src/logic/logic_search.erl index acb5fd6..4e481a3 100755 --- a/src/logic/logic_search.erl +++ b/src/logic/logic_search.erl @@ -500,13 +500,12 @@ format_calendar(Calendar, Params) -> tags => Calendar#calendar.tags, rating_avg => Calendar#calendar.rating_avg, rating_count => Calendar#calendar.rating_count, - status => Calendar#calendar.status + status => Calendar#calendar.status, + %% Всегда отдаём координаты (не только при гео-запросе) — вид карты + %% на странице поиска строит маркеры и без lat/lon в запросе. + default_location => LocJson }, - Base1 = case geo_origin(Params) of - none -> Base; - _ -> Base#{default_location => LocJson} - end, - maybe_distance(Base1, calendar_coords(Calendar), Params). + maybe_distance(Base, calendar_coords(Calendar), Params). maybe_distance(Map, Coords, Params) -> case {geo_origin(Params), Coords} of diff --git a/test/unit/logic_search_tests.erl b/test/unit/logic_search_tests.erl index 46cc0f3..192c2ee 100755 --- a/test/unit/logic_search_tests.erl +++ b/test/unit/logic_search_tests.erl @@ -29,6 +29,7 @@ logic_search_test_() -> {"Combined search", fun test_combined_search/0}, {"Search calendars", fun test_search_calendars/0}, {"Search calendars include image_url", fun test_search_calendars_image_url/0}, + {"Calendars expose default_location without geo params", fun test_calendars_default_location_always/0}, {"Search all", fun test_search_all/0}, {"Pagination", fun test_pagination/0}, {"Sorting", fun test_sorting/0}, @@ -243,6 +244,22 @@ test_search_calendars_image_url() -> [Hit | _] = [C || C <- Cals, maps:get(id, C) =:= CalendarId], ?assertEqual(<<"https://cdn.example/cal.jpg">>, maps:get(image_url, Hit)). +%% Вид карты на странице поиска строит маркеры без lat/lon в запросе — +%% координаты календаря должны приходить всегда; distance_km — нет. +test_calendars_default_location_always() -> + OwnerId = create_test_user(user), + WithLocId = create_test_calendar(OwnerId, commercial, []), + BareId = create_test_calendar(OwnerId, commercial, []), + set_default_location(WithLocId, <<"Moscow">>, 55.7558, 37.6173), + + {_, Hits} = calendars_from(logic_search:search(<<"calendar">>, <<"Calendar">>, OwnerId, #{})), + [WithLoc] = [C || C <- Hits, maps:get(id, C) =:= WithLocId], + [Bare] = [C || C <- Hits, maps:get(id, C) =:= BareId], + ?assertMatch(#{<<"lat">> := 55.7558, <<"lon">> := 37.6173}, + maps:get(default_location, WithLoc)), + ?assertEqual(null, maps:get(default_location, Bare)), + ?assert(not maps:is_key(distance_km, WithLoc)). + test_search_all() -> OwnerId = create_test_user(user), CalendarId = create_test_calendar(OwnerId, commercial, []),