|
|
require 'delorean'
|
|
|
|
|
|
require File.dirname(__FILE__) + '/../spec_helper'
|
|
|
require File.dirname(__FILE__) + '/../config_spec_helper'
|
|
|
|
|
|
describe UserAdminController, "when manage contest" do
|
|
|
|
|
|
include ConfigSpecHelperMethods
|
|
|
|
|
|
fixtures :users
|
|
|
fixtures :problems
|
|
|
fixtures :contests
|
|
|
fixtures :roles
|
|
|
|
|
|
def change_users_contest_to(user_login_list, contest, reset_timer=false)
|
|
|
post_data = {
|
|
|
:contest => {:id => contest.id},
|
|
|
:operation => 'assign',
|
|
|
:login_list => user_login_list
|
|
|
}
|
|
|
post_data[:reset_timer] = true if reset_timer
|
|
|
post 'manage_contest', post_data, {:user_id => @admin_user.id}
|
|
|
end
|
|
|
|
|
|
before(:each) do
|
|
|
@admin_user = users(:mary)
|
|
|
@contest_b = contests(:contest_b)
|
|
|
@james = users(:james)
|
|
|
@jack = users(:jack)
|
|
|
|
|
|
set_contest_time_limit('3:00')
|
|
|
set_indv_contest_mode
|
|
|
end
|
|
|
|
|
|
it "should allow admin to see contest management page" do
|
|
|
get 'contest_management', {}, {:user_id => @admin_user.id}
|
|
|
|
|
|
response.should render_template 'user_admin/contest_management'
|
|
|
end
|
|
|
|
|
|
it "should change users' contest" do
|
|
|
change_users_contest_to("james\njack", @contest_b)
|
|
|
response.should redirect_to :action => 'contest_management'
|
|
|
|
|
|
@james.contests(true).should include @contest_b
|
|
|
@jack.contests(true).should_not include @contest_a
|
|
|
end
|
|
|
|
|
|
it "should reset users' timer when their contests change" do
|
|
|
@james.update_start_time
|
|
|
|
|
|
Delorean.time_travel_to(190.minutes.since) do
|
|
|
@james.contest_finished?.should be_true
|
|
|
|
|
|
change_users_contest_to("james", @contest_b, true)
|
|
|
|
|
|
@james.contest_finished?.should be_false
|
|
|
end
|
|
|
end
|
|
|
|
|
|
it "should set forced_logout flag for users when their contests change" do
|
|
|
@james.update_start_time
|
|
|
|
|
|
Delorean.time_travel_to(190.minutes.since) do
|
|
|
@james.contest_finished?.should be_true
|
|
|
|
|
|
change_users_contest_to("james", @contest_b, true)
|
|
|
|
|
|
@james.contest_stat(true).forced_logout.should be_true
|
|
|
end
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|