]> git.openstreetmap.org Git - rails.git/blob - test/controllers/notes_controller_test.rb
Merge remote-tracking branch 'upstream/pull/3458'
[rails.git] / test / controllers / notes_controller_test.rb
1 require "test_helper"
2
3 class NotesControllerTest < ActionDispatch::IntegrationTest
4   def setup
5     super
6     # Stub nominatim response for note locations
7     stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
8       .to_return(:status => 404)
9   end
10
11   ##
12   # test all routes which lead to this controller
13   def test_routes
14     assert_routing(
15       { :path => "/user/username/notes", :method => :get },
16       { :controller => "notes", :action => "index", :display_name => "username" }
17     )
18   end
19
20   def test_index_success
21     first_user = create(:user)
22     second_user = create(:user)
23     moderator_user = create(:moderator_user)
24
25     create(:note) do |note|
26       create(:note_comment, :note => note, :author => first_user)
27     end
28     create(:note) do |note|
29       create(:note_comment, :note => note, :author => second_user)
30     end
31     create(:note, :status => "hidden") do |note|
32       create(:note_comment, :note => note, :author => second_user)
33     end
34
35     # Note that the table rows include a header row
36     get user_notes_path(:display_name => first_user.display_name)
37     assert_response :success
38     assert_select "table.note_list tr", :count => 2
39
40     get user_notes_path(:display_name => second_user.display_name)
41     assert_response :success
42     assert_select "table.note_list tr", :count => 2
43
44     get user_notes_path(:display_name => "non-existent")
45     assert_response :not_found
46
47     session_for(moderator_user)
48
49     get user_notes_path(:display_name => first_user.display_name)
50     assert_response :success
51     assert_select "table.note_list tr", :count => 2
52
53     get user_notes_path(:display_name => second_user.display_name)
54     assert_response :success
55     assert_select "table.note_list tr", :count => 3
56
57     get user_notes_path(:display_name => "non-existent")
58     assert_response :not_found
59   end
60
61   def test_index_paged
62     user = create(:user)
63
64     create_list(:note, 50) do |note|
65       create(:note_comment, :note => note, :author => user)
66     end
67
68     get user_notes_path(:display_name => user.display_name)
69     assert_response :success
70     assert_select "table.note_list tr", :count => 11
71
72     get user_notes_path(:display_name => user.display_name, :page => 2)
73     assert_response :success
74     assert_select "table.note_list tr", :count => 11
75   end
76
77   def test_empty_page
78     user = create(:user)
79     get user_notes_path(:display_name => user.display_name)
80     assert_response :success
81     assert_select "h4", :html => "No notes"
82   end
83 end