]> git.openstreetmap.org Git - rails.git/blob - test/controllers/notes_controller_test.rb
Refactor more controller tests
[rails.git] / test / controllers / notes_controller_test.rb
1 require "test_helper"
2
3 class NotesControllerTest < ActionController::TestCase
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 => "mine", :display_name => "username" }
17     )
18   end
19
20   def test_mine_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 :mine, :params => { :display_name => first_user.display_name }
37     assert_response :success
38     assert_select "table.note_list tr", :count => 2
39
40     get :mine, :params => { :display_name => second_user.display_name }
41     assert_response :success
42     assert_select "table.note_list tr", :count => 2
43
44     get :mine, :params => { :display_name => "non-existent" }
45     assert_response :not_found
46
47     session[:user] = moderator_user.id
48
49     get :mine, :params => { :display_name => first_user.display_name }
50     assert_response :success
51     assert_select "table.note_list tr", :count => 2
52
53     get :mine, :params => { :display_name => second_user.display_name }
54     assert_response :success
55     assert_select "table.note_list tr", :count => 3
56
57     get :mine, :params => { :display_name => "non-existent" }
58     assert_response :not_found
59   end
60
61   def test_mine_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 :mine, :params => { :display_name => user.display_name }
69     assert_response :success
70     assert_select "table.note_list tr", :count => 11
71
72     get :mine, :params => { :display_name => user.display_name, :page => 2 }
73     assert_response :success
74     assert_select "table.note_list tr", :count => 11
75   end
76 end