1 require "application_system_test_case"
3 class SiteTest < ApplicationSystemTestCase
4 test "visiting the index" do
7 assert_selector "h1", :text => "OpenStreetMap"
10 test "tooltip shows for Layers button" do
13 assert_no_selector ".tooltip"
14 button = find ".control-layers .control-button"
16 assert_selector ".tooltip", :text => "Layers"
19 test "tooltip shows for Map Key button on Standard layer" do
22 assert_no_selector ".tooltip"
23 button = find ".control-legend .control-button"
25 tooltip = find ".tooltip"
26 tooltip.assert_text "Map Key"
27 tooltip.assert_no_text "not available"
30 test "tooltip shows for Map Key button on a layer without a key provided" do
31 visit "/#layers=H" # assumes that HOT layer has no map key
33 assert_no_selector ".tooltip"
34 button = find ".control-legend .control-button"
36 tooltip = find ".tooltip"
37 tooltip.assert_text "Map Key"
38 tooltip.assert_text "not available"
41 test "tooltip shows for query button when zoomed in" do
44 assert_no_selector ".tooltip"
45 button = find ".control-query .control-button"
47 tooltip = find ".tooltip"
48 tooltip.assert_text "Query features"
49 tooltip.assert_no_text "Zoom in"
52 test "tooltips on low zoom levels for disabled control 'Edit'" do
53 check_control_tooltips_on_low_zoom "Edit"
55 test "tooltips on low zoom levels for disabled control 'Add a note to the map'" do
56 check_control_tooltips_on_low_zoom "Add a note to the map"
58 test "tooltips on low zoom levels for disabled control 'Query features'" do
59 check_control_tooltips_on_low_zoom "Query features"
62 test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control 'Edit'" do
63 check_control_tooltips_on_high_zoom "Edit"
65 test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control 'Add a note to the map'" do
66 check_control_tooltips_on_high_zoom "Add a note to the map"
68 test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control 'Query features'" do
69 check_control_tooltips_on_high_zoom "Query features"
72 test "notes layer tooltip appears on zoom out" do
73 visit "/#map=10/40/-4" # depends on zoom levels where notes are allowed
79 assert_field "Map Notes"
80 find_field("Map Notes").hover # try to trigger disabled tooltip
83 zoom_out = find_link("Zoom Out")
84 zoom_out.hover # un-hover the tooltip that's being tested
85 zoom_out.click(:shift)
88 assert_field "Map Notes", :disabled => true
89 find_field("Map Notes", :disabled => true).hover
91 assert_selector ".tooltip", :text => "Zoom in to see"
94 test "language selector should exist when logged out" do
96 assert_selector ".language-change-trigger", :visible => "all"
97 AVAILABLE_LANGUAGES.each do |locale|
98 assert_selector "option[value='#{locale[:code]}']", :visible => "all"
102 test "language selector should not exist when logged in" do
103 sign_in_as(create(:user))
106 assert_no_selector ".language-change-trigger", :visible => "all"
111 def check_control_tooltips_on_low_zoom(locator)
114 assert_no_selector ".tooltip"
115 find_link(locator).hover
116 assert_selector ".tooltip", :text => "Zoom in to"
119 def check_control_tooltips_on_high_zoom(locator)
122 assert_no_selector ".tooltip"
123 find_link(locator).hover
124 assert_no_selector ".tooltip", :text => "Zoom in to"
125 find("h1").hover # un-hover original element
128 find_link(locator, :class => "disabled") # Ensure that capybara has waited for JS to finish processing
130 assert_no_selector ".tooltip"
131 find_link(locator).hover
132 assert_selector ".tooltip", :text => "Zoom in to"