diff --git a/spec/models/site_spec.rb b/spec/models/site_spec.rb new file mode 100644 --- /dev/null +++ b/spec/models/site_spec.rb @@ -0,0 +1,43 @@ + +require File.dirname(__FILE__) + '/../spec_helper' + +describe Site do + + before(:each) do + start_time = Time.local(2008,5,10,9,00) + @site = Site.new({:name => 'Test site', + :started => true, + :start_time => start_time }) + end + + it "should report that the contest is not finished when the contest time limit is not set" do + Configuration.should_receive(:[]).with('contest.time_limit'). + and_return('unlimit') + Time.should_not_receive(:now) + @site.finished?.should == false + end + + it "should report that the contest is finished when the contest is over" do + Configuration.should_receive(:[]).with('contest.time_limit'). + and_return('5:00') + Time.should_receive(:now).and_return(Time.local(2008,5,10,14,01)) + @site.finished?.should == true + end + + it "should report if the contest is finished correctly, when the contest is over, and the contest time contains some minutes" do + Configuration.should_receive(:[]).twice.with('contest.time_limit'). + and_return('5:15') + Time.should_receive(:now). + and_return(Time.local(2008,5,10,14,14),Time.local(2008,5,10,14,16)) + @site.finished?.should == false + @site.finished?.should == true + end + + it "should report that the contest is not finished, when the time is exactly at the finish time" do + Configuration.should_receive(:[]).with('contest.time_limit'). + and_return('5:00') + Time.should_receive(:now).and_return(Time.local(2008,5,10,14,00)) + @site.finished?.should == false + end + +end