We forgot to do so in commitb896fc4bb. Back then, we said: > Note that we aren't providing a proper aria-label for markers on the > map we use in the form to create a proposal or an investment. Adding > one isn't trivial given the current code, and keyboard users can't add > a marker in the first place. We'll have to revisit this issue when we > add keyboard support for this. However, in the admin section, the marker is already there, so it should have a label. In this case, we're using the coordinates as label because it's the most relevant text for the marker in the context of a form. We could also use "Default map location" instead, but that information is already present on the page. Axe was reporting the same accessibility error we mentioned in commitb896fc4bbin this situation.
76 lines
2.4 KiB
Ruby
76 lines
2.4 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Shared::MapLocationComponent do
|
|
describe "remove marker button" do
|
|
it "is not rendered when there's no form" do
|
|
map_location = build(:map_location, proposal: Proposal.new)
|
|
|
|
render_inline Shared::MapLocationComponent.new(map_location)
|
|
|
|
expect(page).not_to have_button "Remove map marker"
|
|
end
|
|
|
|
it "is not rendered when there's no mappable" do
|
|
map_location = build(:map_location)
|
|
form = ConsulFormBuilder.new(:map_location, map_location, ApplicationController.new.view_context, {})
|
|
|
|
render_inline Shared::MapLocationComponent.new(map_location, form: form)
|
|
|
|
expect(page).not_to have_button "Remove map marker"
|
|
end
|
|
|
|
it "is rendered when there's a form and a mappable" do
|
|
map_location = build(:map_location, proposal: Proposal.new)
|
|
form = ConsulFormBuilder.new(:map_location, map_location, ApplicationController.new.view_context, {})
|
|
|
|
render_inline Shared::MapLocationComponent.new(map_location, form: form)
|
|
|
|
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
|