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)