]> git.openstreetmap.org Git - rails.git/blob - test/controllers/accounts/terms_controller_test.rb
Use resourceful routes for terms view/accept/decline
[rails.git] / test / controllers / accounts / terms_controller_test.rb
1 require "test_helper"
2
3 module Accounts
4   class TermsControllerTest < ActionDispatch::IntegrationTest
5     ##
6     # test all routes which lead to this controller
7     def test_routes
8       assert_routing(
9         { :path => "/account/terms", :method => :get },
10         { :controller => "accounts/terms", :action => "show" }
11       )
12       assert_routing(
13         { :path => "/account/terms", :method => :put },
14         { :controller => "accounts/terms", :action => "update" }
15       )
16
17       get "/user/terms"
18       assert_redirected_to "/account/terms"
19     end
20
21     def test_show_not_logged_in
22       get account_terms_path
23
24       assert_redirected_to login_path(:referer => account_terms_path)
25     end
26
27     def test_show_agreed
28       user = create(:user, :terms_seen => true, :terms_agreed => Date.yesterday)
29       session_for(user)
30
31       get account_terms_path
32       assert_redirected_to edit_account_path
33     end
34
35     def test_show_not_seen_without_referer
36       user = create(:user, :terms_seen => false, :terms_agreed => nil)
37       session_for(user)
38
39       get account_terms_path
40       assert_response :success
41     end
42
43     def test_show_not_seen_with_referer
44       user = create(:user, :terms_seen => false, :terms_agreed => nil)
45       session_for(user)
46
47       get account_terms_path(:referer => "/test")
48       assert_response :success
49     end
50
51     def test_update_not_seen_without_referer
52       user = create(:user, :terms_seen => false, :terms_agreed => nil)
53       session_for(user)
54
55       put account_terms_path, :params => { :user => { :consider_pd => true }, :read_ct => 1, :read_tou => 1 }
56       assert_redirected_to edit_account_path
57       assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
58
59       user.reload
60
61       assert user.consider_pd
62       assert_not_nil user.terms_agreed
63       assert user.terms_seen
64     end
65
66     def test_update_not_seen_with_referer
67       user = create(:user, :terms_seen => false, :terms_agreed => nil)
68       session_for(user)
69
70       put account_terms_path, :params => { :user => { :consider_pd => true }, :referer => "/test", :read_ct => 1, :read_tou => 1 }
71       assert_redirected_to "/test"
72       assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
73
74       user.reload
75
76       assert user.consider_pd
77       assert_not_nil user.terms_agreed
78       assert user.terms_seen
79     end
80
81     # Check that if you haven't seen the terms, and make a request that requires authentication,
82     # that your request is redirected to view the terms
83     def test_terms_not_seen_redirection
84       user = create(:user, :terms_seen => false, :terms_agreed => nil)
85       session_for(user)
86
87       get edit_account_path
88       assert_redirected_to account_terms_path(:referer => "/account/edit")
89     end
90   end
91 end