diff --git a/app/components/shared/map_location_component.rb b/app/components/shared/map_location_component.rb index 05c06dac7..bd59e52db 100644 --- a/app/components/shared/map_location_component.rb +++ b/app/components/shared/map_location_component.rb @@ -62,12 +62,20 @@ class Shared::MapLocationComponent < ApplicationComponent marker_investments_coordinates: investments_coordinates, marker_latitude: map_location.latitude.presence, marker_longitude: map_location.longitude.presence, - marker_title: map_location.title.presence, + marker_title: map_location.title.presence || marker_coordinates_text, marker_clustering: feature?("map.feature.marker_clustering"), geozones: geozones_data }.merge(input_selectors) end + def marker_coordinates_text + return unless map_location.available? + + t("proposals.form.map_marker_coordinates", + latitude: map_location.latitude, + longitude: map_location.longitude) + end + def input_selectors if form { diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml index 269452fb7..b54745690 100644 --- a/config/locales/en/general.yml +++ b/config/locales/en/general.yml @@ -328,6 +328,7 @@ en: tags_placeholder: "Enter the tags you would like to use, separated by commas (',')" map_location: "Map location" map_location_instructions: "Navigate the map to the location and place the marker." + map_marker_coordinates: "Latitude: %{latitude}. Longitude: %{longitude}" map_remove_marker: "Remove map marker" index: featured_proposals: Featured diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml index 9bcb5566a..514378598 100644 --- a/config/locales/es/general.yml +++ b/config/locales/es/general.yml @@ -328,6 +328,7 @@ es: tags_placeholder: "Escribe las etiquetas que desees separadas por coma (',')" map_location: "Ubicación en el mapa" map_location_instructions: "Navega por el mapa hasta la ubicación y coloca el marcador." + map_marker_coordinates: "Latitud: %{latitude}. Longitud: %{longitude}" map_remove_marker: "Eliminar el marcador" index: featured_proposals: Destacadas diff --git a/spec/components/shared/map_location_component_spec.rb b/spec/components/shared/map_location_component_spec.rb index efd71028b..be8b045ba 100644 --- a/spec/components/shared/map_location_component_spec.rb +++ b/spec/components/shared/map_location_component_spec.rb @@ -28,4 +28,48 @@ describe Shared::MapLocationComponent do expect(page).to have_button "Remove map marker" end end + + describe "marker title" do + it "uses the mappable title when there's a mappable with a title" do + map_location = build( + :map_location, + proposal: Proposal.new(title: "Meet me here"), + latitude: "25.25", + longitude: "13.14" + ) + + render_inline Shared::MapLocationComponent.new(map_location) + + expect(page).to have_css "[data-marker-title='Meet me here']" + end + + it "uses the coordinates when there's no mappable" do + map_location = build(:map_location, latitude: "25.25", longitude: "13.14") + + render_inline Shared::MapLocationComponent.new(map_location) + + expect(page).to have_css "[data-marker-title='Latitude: 25.25. Longitude: 13.14']" + end + + it "uses the coordinates when the mappable has an empty title" do + map_location = build( + :map_location, + proposal: Proposal.new(title: ""), + latitude: "25.25", + longitude: "13.14" + ) + + render_inline Shared::MapLocationComponent.new(map_location) + + expect(page).to have_css "[data-marker-title='Latitude: 25.25. Longitude: 13.14']" + end + + it "is not present when the map location isn't available" do + map_location = build(:map_location, latitude: "25.25", longitude: nil) + + render_inline Shared::MapLocationComponent.new(map_location) + + expect(page).not_to have_css "[data-marker-title]" + end + end end diff --git a/spec/system/admin/settings_spec.rb b/spec/system/admin/settings_spec.rb index 68f6c3ba5..5917591e6 100644 --- a/spec/system/admin/settings_spec.rb +++ b/spec/system/admin/settings_spec.rb @@ -60,6 +60,7 @@ describe "Admin settings", :admin do expect(page).to have_field "Latitude", with: "51.48" expect(page).to have_field "Longitude", with: "0.0" + expect(page).to have_css ".map-icon[aria-label='Latitude: 51.48. Longitude: 0.0']" within "#map-form" do find(".map-location").click @@ -68,7 +69,9 @@ describe "Admin settings", :admin do expect(page).to have_content "Map configuration updated successfully" expect(page).to have_field "Latitude" + expect(page).to have_css ".map-icon" expect(page).not_to have_field "Latitude", with: "51.48" + expect(page).not_to have_css ".map-icon[aria-label='Latitude: 51.48. Longitude: 0.0']" end end