@@ -72,7 +72,55 @@ defmodule Cadet.Autograder.ResultStoreWorkerTest do
72
72
end
73
73
74
74
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
+
76
124
for result <- results do
77
125
ResultStoreWorker . perform ( % { answer_id: answer . id , result: result } )
78
126
0 commit comments