@@ -72,7 +72,55 @@ defmodule Cadet.Autograder.ResultStoreWorkerTest do
7272 end
7373
7474 describe "#perform, valid answer_id" do
75- test "before manual grading and grading auto published" , % { answer: answer , results: results } do
75+ test "before manual grading, grading auto published and manual grading required" , % {
76+ answer: answer ,
77+ results: results
78+ } do
79+ for result <- results do
80+ ResultStoreWorker . perform ( % { answer_id: answer . id , result: result } )
81+
82+ answer =
83+ Answer
84+ |> join ( :inner , [ a ] , q in assoc ( a , :question ) )
85+ |> preload ( [ _ , q ] , question: q )
86+ |> Repo . get ( answer . id )
87+
88+ errors_string_keys =
89+ Enum . map ( result . result , fn err ->
90+ Enum . reduce ( err , % { } , fn { k , v } , acc ->
91+ Map . put ( acc , "#{ k } " , v )
92+ end )
93+ end )
94+
95+ if result . max_score == 0 do
96+ assert answer . xp == 0
97+ else
98+ assert answer . xp ==
99+ Integer . floor_div (
100+ answer . question . max_xp * result . score ,
101+ result . max_score
102+ )
103+ end
104+
105+ submission = Repo . get ( Submission , answer . submission_id )
106+
107+ assert submission . is_grading_published == false
108+ assert answer . autograding_status == result . status
109+ assert answer . autograding_results == errors_string_keys
110+ end
111+ end
112+
113+ test "before manual grading, grading auto published and manual grading not required" , % {
114+ results: results
115+ } do
116+ assessment_config =
117+ insert ( :assessment_config , % { is_grading_auto_published: true , is_manually_graded: false } )
118+
119+ assessment = insert ( :assessment , % { config: assessment_config } )
120+ question = insert ( :question , % { assessment: assessment } )
121+ submission = insert ( :submission , % { status: :submitted , assessment: assessment } )
122+ answer = insert ( :answer , % { question: question , submission: submission } )
123+
76124 for result <- results do
77125 ResultStoreWorker . perform ( % { answer_id: answer . id , result: result } )
78126
0 commit comments