]> git.openstreetmap.org Git - rails.git/blob - test/controllers/api/changeset_subscriptions_controller_test.rb
Split api changeset subscription tests
[rails.git] / test / controllers / api / changeset_subscriptions_controller_test.rb
1 require "test_helper"
2
3 module Api
4   class ChangesetsControllerTest < ActionDispatch::IntegrationTest
5     ##
6     # test all routes which lead to this controller
7     def test_routes
8       assert_routing(
9         { :path => "/api/0.6/changeset/1/subscription", :method => :post },
10         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1" }
11       )
12       assert_routing(
13         { :path => "/api/0.6/changeset/1/subscription.json", :method => :post },
14         { :controller => "api/changeset_subscriptions", :action => "create", :changeset_id => "1", :format => "json" }
15       )
16       assert_routing(
17         { :path => "/api/0.6/changeset/1/subscription", :method => :delete },
18         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1" }
19       )
20       assert_routing(
21         { :path => "/api/0.6/changeset/1/subscription.json", :method => :delete },
22         { :controller => "api/changeset_subscriptions", :action => "destroy", :changeset_id => "1", :format => "json" }
23       )
24     end
25
26     def test_create_by_unauthorized
27       changeset = create(:changeset, :closed)
28
29       assert_no_difference "ChangesetSubscription.count" do
30         assert_no_difference "changeset.subscribers.count" do
31           post api_changeset_subscription_path(changeset)
32
33           assert_response :unauthorized
34         end
35       end
36     end
37
38     def test_create_on_missing_changeset
39       user = create(:user)
40       auth_header = bearer_authorization_header user
41
42       assert_no_difference "ChangesetSubscription.count" do
43         post api_changeset_subscription_path(999111), :headers => auth_header
44
45         assert_response :not_found
46       end
47     end
48
49     def test_create_when_subscribed
50       user = create(:user)
51       auth_header = bearer_authorization_header user
52       changeset = create(:changeset, :closed)
53       changeset.subscribers << user
54
55       assert_no_difference "ChangesetSubscription.count" do
56         assert_no_difference "changeset.subscribers.count" do
57           post api_changeset_subscription_path(changeset), :headers => auth_header
58
59           assert_response :conflict
60         end
61       end
62     end
63
64     def test_create_on_open_changeset
65       user = create(:user)
66       auth_header = bearer_authorization_header user
67       changeset = create(:changeset)
68
69       assert_difference "ChangesetSubscription.count", 1 do
70         assert_difference "changeset.subscribers.count", 1 do
71           post api_changeset_subscription_path(changeset), :headers => auth_header
72
73           assert_response :success
74         end
75       end
76     end
77
78     def test_create_on_closed_changeset
79       user = create(:user)
80       auth_header = bearer_authorization_header user
81       changeset = create(:changeset, :closed)
82
83       assert_difference "ChangesetSubscription.count", 1 do
84         assert_difference "changeset.subscribers.count", 1 do
85           post api_changeset_subscription_path(changeset), :headers => auth_header
86
87           assert_response :success
88         end
89       end
90     end
91
92     def test_destroy_by_unauthorized
93       changeset = create(:changeset, :closed)
94
95       assert_no_difference "ChangesetSubscription.count" do
96         assert_no_difference "changeset.subscribers.count" do
97           delete api_changeset_subscription_path(changeset)
98
99           assert_response :unauthorized
100         end
101       end
102     end
103
104     def test_destroy_on_missing_changeset
105       user = create(:user)
106       auth_header = bearer_authorization_header user
107
108       assert_no_difference "ChangesetSubscription.count" do
109         delete api_changeset_subscription_path(999111), :headers => auth_header
110
111         assert_response :not_found
112       end
113     end
114
115     def test_destroy_when_not_subscribed
116       user = create(:user)
117       auth_header = bearer_authorization_header user
118       changeset = create(:changeset, :closed)
119
120       assert_no_difference "ChangesetSubscription.count" do
121         assert_no_difference "changeset.subscribers.count" do
122           delete api_changeset_subscription_path(changeset), :headers => auth_header
123
124           assert_response :not_found
125         end
126       end
127     end
128
129     def test_destroy_on_open_changeset
130       user = create(:user)
131       auth_header = bearer_authorization_header user
132       changeset = create(:changeset)
133       changeset.subscribers.push(user)
134
135       assert_difference "ChangesetSubscription.count", -1 do
136         assert_difference "changeset.subscribers.count", -1 do
137           delete api_changeset_subscription_path(changeset), :headers => auth_header
138
139           assert_response :success
140         end
141       end
142     end
143
144     def test_destroy_on_closed_changeset
145       user = create(:user)
146       auth_header = bearer_authorization_header user
147       changeset = create(:changeset, :closed)
148       changeset.subscribers.push(user)
149
150       assert_difference "ChangesetSubscription.count", -1 do
151         assert_difference "changeset.subscribers.count", -1 do
152           delete api_changeset_subscription_path(changeset), :headers => auth_header
153
154           assert_response :success
155         end
156       end
157     end
158   end
159 end