Format closed_at correctly in changeset API responses
[rails.git] / test / controllers / notes_controller_test.rb
1 require "test_helper"
2
3 class NotesControllerTest < ActionController::TestCase
4   def setup
5     # Stub nominatim response for note locations
6     stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
7       .to_return(:status => 404)
8   end
9
10   ##
11   # test all routes which lead to this controller
12   def test_routes
13     assert_routing(
14       { :path => "/user/username/notes", :method => :get },
15       { :controller => "notes", :action => "mine", :display_name => "username" }
16     )
17   end
18
19   def test_mine_success
20     first_user = create(:user)
21     second_user = create(:user)
22     moderator_user = create(:moderator_user)
23
24     create(:note) do |note|
25       create(:note_comment, :note => note, :author => first_user)
26     end
27     create(:note) do |note|
28       create(:note_comment, :note => note, :author => second_user)
29     end
30     create(:note, :status => "hidden") do |note|
31       create(:note_comment, :note => note, :author => second_user)
32     end
33
34     # Note that the table rows include a header row
35     get :mine, :params => { :display_name => first_user.display_name }
36     assert_response :success
37     assert_select "table.note_list tr", :count => 2
38
39     get :mine, :params => { :display_name => second_user.display_name }
40     assert_response :success
41     assert_select "table.note_list tr", :count => 2
42
43     get :mine, :params => { :display_name => "non-existent" }
44     assert_response :not_found
45
46     session[:user] = moderator_user.id
47
48     get :mine, :params => { :display_name => first_user.display_name }
49     assert_response :success
50     assert_select "table.note_list tr", :count => 2
51
52     get :mine, :params => { :display_name => second_user.display_name }
53     assert_response :success
54     assert_select "table.note_list tr", :count => 3
55
56     get :mine, :params => { :display_name => "non-existent" }
57     assert_response :not_found
58   end
59
60   def test_mine_paged
61     user = create(:user)
62
63     create_list(:note, 50) do |note|
64       create(:note_comment, :note => note, :author => user)
65     end
66
67     get :mine, :params => { :display_name => user.display_name }
68     assert_response :success
69     assert_select "table.note_list tr", :count => 11
70
71     get :mine, :params => { :display_name => user.display_name, :page => 2 }
72     assert_response :success
73     assert_select "table.note_list tr", :count => 11
74   end
75 end