diff --git a/spec/integration/contest_managements_spec.rb b/spec/integration/contest_managements_spec.rb --- a/spec/integration/contest_managements_spec.rb +++ b/spec/integration/contest_managements_spec.rb @@ -18,6 +18,7 @@ set_contest_time_limit('3:00') set_indv_contest_mode + enable_multicontest end it "should reset users' timer when their contests change" do @@ -42,6 +43,30 @@ end end + it "should force users to log out when their contests change" do + james_session = open_session + james_session.extend(MainSessionMethods) + + james_login_and_get_main_list(james_session) + james_session.response.should_not have_text(/OVER/) + + Delorean.time_travel_to(190.minutes.since) do + james_session.get_main_list + james_session.response.should have_text(/OVER/) + + admin_change_users_contest_to("james", @contest_b, true) + + james_session.get '/main/list' + james_session.response.should_not render_template 'main/list' + james_session.should be_redirect + + Delorean.time_travel_to(200.minutes.since) do + james_login_and_get_main_list(james_session) + james_session.response.should_not have_text(/OVER/) + end + end + end + private module MainSessionMethods @@ -54,6 +79,11 @@ get '/main/list' assert_template 'main/list' end + + def get_main_list_and_assert_logout + get '/main/list' + assert_redirected_to '/main' + end end module ContestManagementSessionMethods