1 # frozen_string_literal: true
6 class TermsControllerTest < ActionDispatch::IntegrationTest
8 # test all routes which lead to this controller
11 { :path => "/account/terms", :method => :get },
12 { :controller => "accounts/terms", :action => "show" }
15 { :path => "/account/terms", :method => :put },
16 { :controller => "accounts/terms", :action => "update" }
20 assert_redirected_to "/account/terms"
23 def test_show_not_logged_in
24 get account_terms_path
26 assert_redirected_to login_path(:referer => account_terms_path)
30 user = create(:user, :terms_seen => true, :terms_agreed => Date.yesterday)
33 get account_terms_path
34 assert_response :success
37 def test_show_not_seen_without_referer
38 user = create(:user, :terms_seen => false, :terms_agreed => nil)
41 get account_terms_path
42 assert_response :success
45 def test_show_not_seen_with_referer
46 user = create(:user, :terms_seen => false, :terms_agreed => nil)
49 get account_terms_path(:referer => "/test")
50 assert_response :success
53 def test_update_decline_by_not_checking_the_boxes
55 user = create(:user, :terms_seen => false, :terms_agreed => nil, :tou_agreed => nil)
58 put account_terms_path, :params => { :continue => "Continue" }
60 assert_redirected_to account_path
61 assert_equal({ :partial => "accounts/terms/terms_declined_flash" }, flash[:notice])
64 assert user.terms_seen
65 assert_nil user.terms_agreed
66 assert_nil user.tou_agreed
70 def test_update_decline_by_cancel
72 user = create(:user, :terms_seen => false, :terms_agreed => nil, :tou_agreed => nil)
75 put account_terms_path, :params => { :read_ct => 1, :read_tou => 1, :decline => "Cancel" }
77 assert_redirected_to account_path
78 assert_equal({ :partial => "accounts/terms/terms_declined_flash" }, flash[:notice])
81 assert user.terms_seen
82 assert_nil user.terms_agreed
83 assert_nil user.tou_agreed
87 def test_update_decline_previously_accepted_by_not_checking_the_boxes
89 user = create(:user, :terms_seen => true, :terms_agreed => Date.yesterday, :tou_agreed => Date.yesterday)
92 put account_terms_path, :params => { :continue => "Continue" }
94 assert_redirected_to account_path
95 assert_equal({ :partial => "accounts/terms/terms_declined_flash" }, flash[:notice])
98 assert user.terms_seen
99 assert_equal Date.yesterday, user.terms_agreed
100 assert_equal Date.yesterday, user.tou_agreed
104 def test_update_decline_previously_accepted_by_cancel
106 user = create(:user, :terms_seen => true, :terms_agreed => Date.yesterday, :tou_agreed => Date.yesterday)
109 put account_terms_path, :params => { :read_ct => 1, :read_tou => 1, :decline => "Cancel" }
111 assert_redirected_to account_path
112 assert_equal({ :partial => "accounts/terms/terms_declined_flash" }, flash[:notice])
115 assert user.terms_seen
116 assert_equal Date.yesterday, user.terms_agreed
117 assert_equal Date.yesterday, user.tou_agreed
121 def test_update_accept_not_seen
123 user = create(:user, :terms_seen => false, :terms_agreed => nil, :tou_agreed => nil)
126 put account_terms_path, :params => { :read_ct => 1, :read_tou => 1 }
128 assert_redirected_to account_path
129 assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
132 assert user.terms_seen
133 assert_equal Time.now.utc, user.terms_agreed
134 assert_equal Time.now.utc, user.tou_agreed
138 def test_update_accept_not_seen_with_referer
140 user = create(:user, :terms_seen => false, :terms_agreed => nil, :tou_agreed => nil)
143 put account_terms_path, :params => { :referer => "/test", :read_ct => 1, :read_tou => 1 }
145 assert_redirected_to "/test"
146 assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
149 assert user.terms_seen
150 assert_equal Time.now.utc, user.terms_agreed
151 assert_equal Time.now.utc, user.tou_agreed
155 def test_update_accept_previously_accepted
157 user = create(:user, :terms_seen => true, :terms_agreed => Date.yesterday, :tou_agreed => Date.yesterday)
160 put account_terms_path, :params => { :read_ct => 1, :read_tou => 1 }
162 assert_redirected_to account_path
163 assert_equal "Thanks for accepting the new contributor terms!", flash[:notice]
166 assert user.terms_seen
167 assert_equal Time.now.utc, user.terms_agreed
168 assert_equal Time.now.utc, user.tou_agreed
172 # Check that if you haven't seen the terms, and make a request that requires authentication,
173 # that your request is redirected to view the terms
174 def test_terms_not_seen_redirection
175 user = create(:user, :terms_seen => false, :terms_agreed => nil)
179 assert_redirected_to account_terms_path(:referer => account_path)