]> git.openstreetmap.org Git - rails.git/blob - test/system/create_note_test.rb
f3a77e5447cd9c3646b02368b1bad04b004ba858
[rails.git] / test / system / create_note_test.rb
1 require "application_system_test_case"
2
3 class CreateNoteTest < ApplicationSystemTestCase
4   test "can create note" do
5     visit new_note_path(:anchor => "map=18/0/0")
6
7     within_sidebar do
8       assert_button "Add Note", :disabled => true
9
10       fill_in "text", :with => "Some newly added note description"
11       click_on "Add Note"
12
13       assert_content "Unresolved note ##{Note.last.id}"
14       assert_content "Some newly added note description"
15     end
16   end
17
18   test "cannot create new note when zoomed out" do
19     visit new_note_path(:anchor => "map=12/0/0")
20
21     within_sidebar do
22       assert_no_content "Zoom in to add a note"
23       assert_button "Add Note", :disabled => true
24
25       fill_in "text", :with => "Some newly added note description"
26
27       assert_no_content "Zoom in to add a note"
28       assert_button "Add Note", :disabled => false
29     end
30
31     find(".control-button.zoomout").click
32
33     within_sidebar do
34       assert_content "Zoom in to add a note"
35       assert_button "Add Note", :disabled => true
36     end
37
38     find(".control-button.zoomin").click
39
40     within_sidebar do
41       assert_no_content "Zoom in to add a note"
42       assert_button "Add Note", :disabled => false
43
44       click_on "Add Note"
45
46       assert_content "Unresolved note ##{Note.last.id}"
47       assert_content "Some newly added note description"
48     end
49   end
50
51   test "can open new note page when zoomed out" do
52     visit new_note_path(:anchor => "map=11/0/0")
53
54     within_sidebar do
55       assert_content "Zoom in to add a note"
56       assert_button "Add Note", :disabled => true
57
58       fill_in "text", :with => "Some newly added note description"
59
60       assert_content "Zoom in to add a note"
61       assert_button "Add Note", :disabled => true
62     end
63
64     find(".control-button.zoomin").click
65
66     within_sidebar do
67       assert_no_content "Zoom in to add a note"
68       assert_button "Add Note", :disabled => false
69     end
70   end
71
72   test "cannot create note when api is readonly" do
73     with_settings(:status => "api_readonly") do
74       visit new_note_path(:anchor => "map=18/0/0")
75
76       within_sidebar do
77         assert_no_button "Add Note", :disabled => true
78       end
79     end
80   end
81
82   test "encouragement to contribute appears after 10 created notes and disappears after login" do
83     encouragement_threshold = 10
84
85     encouragement_threshold.times do |n|
86       visit new_note_path(:anchor => "map=16/0/#{0.001 * n}")
87
88       within_sidebar do
89         assert_no_content(/already posted at least \d+ anonymous note/)
90
91         fill_in "text", :with => "new note ##{n + 1}"
92         click_on "Add Note"
93
94         assert_content "new note ##{n + 1}"
95       end
96     end
97
98     visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}")
99
100     within_sidebar do
101       assert_content(/already posted at least #{encouragement_threshold} anonymous note/)
102     end
103
104     sign_in_as(create(:user))
105     visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}")
106
107     within_sidebar do
108       assert_no_content(/already posted at least \d+ anonymous note/)
109     end
110
111     sign_out
112     visit new_note_path(:anchor => "map=16/0/#{0.001 * encouragement_threshold}")
113
114     within_sidebar do
115       assert_no_content(/already posted at least \d+ anonymous note/)
116     end
117   end
118 end