@@ -28,7 +28,7 @@ def tearDown(self) -> None:
2828 def test_evaluate_returns_feedback_list (self ):
2929 event = {
3030 "path" : "/evaluate" ,
31- "body" : {"submission" : {"type" : "TEXT" , "content" : {}}},
31+ "body" : {"submission" : {"type" : "TEXT" , "content" : {"text" : "" }}},
3232 }
3333
3434 response = handler (event )
@@ -205,6 +205,29 @@ def test_other_submission_extracts_value(self):
205205 self .assertEqual (self .captured ["answer" ], "some text" )
206206 self .assertEqual (result [0 ]["awardedPoints" ], True ) # type: ignore
207207
208+ def test_typed_submission_falls_back_to_value_key (self ):
209+ event = {
210+ "path" : "/evaluate" ,
211+ "body" : {
212+ "submission" : {"type" : "MATH" , "content" : {"value" : "x+1" }},
213+ "task" : {"title" : "T" , "referenceSolution" : {"value" : "x+1" }},
214+ },
215+ }
216+ result = handler (event )
217+ self .assertEqual (self .captured ["response" ], "x+1" )
218+ self .assertEqual (self .captured ["answer" ], "x+1" )
219+
220+ def test_missing_content_key_returns_error (self ):
221+ event = {
222+ "path" : "/evaluate" ,
223+ "body" : {
224+ "submission" : {"type" : "MATH" , "content" : {"unknown_key" : "x+1" }},
225+ },
226+ }
227+ result = handler (event )
228+ self .assertIn ("error" , result )
229+ self .assertIn ("expression" , result ["error" ]["message" ])
230+
208231 def test_configuration_params_forwarded (self ):
209232 event = {
210233 "path" : "/evaluate" ,
@@ -412,6 +435,19 @@ def test_other_submission_extracts_value(self):
412435
413436 self .assertEqual (self .captured ["response" ], "some text" )
414437
438+ def test_typed_submission_falls_back_to_value_key (self ):
439+ event = {
440+ "path" : "/evaluate" ,
441+ "body" : {
442+ "submission" : {"type" : "MATH" , "content" : {"value" : "x+1" }},
443+ "preSubmissionFeedback" : {"enabled" : True },
444+ },
445+ }
446+
447+ handler (event )
448+
449+ self .assertEqual (self .captured ["response" ], "x+1" )
450+
415451 def test_configuration_params_forwarded (self ):
416452 event = {
417453 "path" : "/evaluate" ,
0 commit comments