+
+ test "tooltip shows for Layers button" do
+ visit "/"
+
+ assert_no_selector ".tooltip"
+ button = find ".control-layers .control-button"
+ button.hover
+ assert_selector ".tooltip", :text => "Layers"
+ end
+
+ test "tooltip shows for Map Key button on Standard layer" do
+ visit "/"
+
+ assert_no_selector ".tooltip"
+ button = find ".control-key .control-button"
+ button.hover
+ tooltip = find ".tooltip"
+ tooltip.assert_text "Map Key"
+ tooltip.assert_no_text "not available"
+ end
+
+ test "tooltip shows for Map Key button on a layer without a key provided" do
+ visit "/#layers=Y" # assumes that CyclOSM layer has no map key
+
+ assert_no_selector ".tooltip"
+ button = find ".control-key .control-button"
+ button.hover
+ tooltip = find ".tooltip"
+ tooltip.assert_text "Map Key"
+ tooltip.assert_text "not available"
+ end
+
+ test "tooltip shows for query button when zoomed in" do
+ visit "/#map=14/0/0"
+
+ assert_no_selector ".tooltip"
+ button = find ".control-query .control-button"
+ button.hover
+ tooltip = find ".tooltip"
+ tooltip.assert_text "Query features"
+ tooltip.assert_no_text "Zoom in"
+ end
+
+ [
+ "#edit_tab",
+ ".control-note .control-button",
+ ".control-query .control-button"
+ ].each do |selector|
+ test "tooltips on low zoom levels for disabled control '#{selector}'" do
+ visit "/#map=10/0/0"
+
+ assert_no_selector ".tooltip"
+ find(selector).hover
+ assert_selector ".tooltip", :text => "Zoom in"
+ end
+
+ test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control '#{selector}'" do
+ visit "/#map=14/0/0"
+
+ assert_no_selector ".tooltip"
+ find(selector).hover
+ assert_no_selector ".tooltip", :text => "Zoom in"
+ find("h1").hover # un-hover original element
+
+ visit "#map=10/0/0"
+ find("#{selector}.disabled") # Ensure that capybara has waited for JS to finish processing
+
+ assert_no_selector ".tooltip"
+ find(selector).hover
+ assert_selector ".tooltip", :text => "Zoom in"
+ end
+ end
+
+ test "notes layer tooltip appears on zoom out" do
+ visit "/#map=9/40/-4" # depends on zoom levels where notes are allowed
+
+ find(".control-layers .control-button").click
+ li = find(".layers-ui .overlay-layers li:first-child")
+ li.not_matches_css? ".disabled"
+ li.hover # try to trigger disabled tooltip
+ zoomout = find(".control-button.zoomout")
+ zoomout.hover # un-hover the tooltip that's being tested
+ zoomout.click
+ li.matches_css? ".disabled"
+ li.hover
+ assert_selector ".tooltip", :text => "Zoom in"
+ end