diff --git a/judge/scripts/test/runner_spec.rb b/judge/scripts/test/runner_spec.rb new file mode 100644 --- /dev/null +++ b/judge/scripts/test/runner_spec.rb @@ -0,0 +1,65 @@ +require File.join(File.dirname(__FILE__),'spec_helper') +require File.join(File.dirname(__FILE__),'engine_spec_helper') + +describe "A grader runner, when grade task" do + + include GraderEngineHelperMethods + + before(:each) do + @config = Grader::Configuration.get_instance + @problem_test_normal = stub(Problem, + :id => 1, :name => 'test_normal', + :full_score => 135) + @user_user1 = stub(User, + :id => 1, :login => 'user1') + + @engine = Grader::Engine.new + @runner = Grader::Runner.new(@engine) + init_sandbox + end + + it "should just return nil when there is no submission" do + Task.should_receive(:get_inqueue_and_change_status).and_return(nil) + @runner.grade_oldest_task.should be_nil + end + + it "should grade oldest task in queue" do + submission = create_normal_submission_mock_from_file("test1_correct.c") + + submission.should_receive(:graded_at=) + submission.should_receive(:points=).with(135) + submission.should_receive(:grader_comment=).with(/^PASSED/) + submission.should_receive(:compiler_message=).with('') + submission.should_receive(:save) + + # mock task + task = stub(Task,:id => 1, :submission_id => submission.id) + Task.should_receive(:get_inqueue_and_change_status).and_return(task) + task.should_receive(:status_complete!) + + # mock Submission + Submission.should_receive(:find). + with(task.submission_id). + and_return(submission) + + @runner.grade_oldest_task + end + + # to be converted + def test_grade_oldest_task_with_grader_process + grader_process = stub + grader_process.expects(:report_active) + + @runner = Grader::Runner.new(@engine,grader_process) + + test_grade_oldest_task + end + + protected + + def create_normal_submission_mock_from_file(source_fname) + create_submission_from_file(1, @user_user1, @problem_test_normal, source_fname) + end + +end +