88import pytest
99
1010from synapseclient import Synapse
11+ from synapseclient .annotations import from_submission_status_annotations
1112from synapseclient .core .exceptions import SynapseHTTPError
1213from synapseclient .models import Evaluation , File , Project , Submission , SubmissionStatus
1314
@@ -214,6 +215,7 @@ async def test_store_submission_status_with_status_change(
214215 # GIVEN a submission status that exists
215216 original_status = test_submission_status .status
216217 original_etag = test_submission_status .etag
218+ original_status_version = test_submission_status .status_version
217219
218220 # WHEN I update the status
219221 test_submission_status .status = "VALIDATED"
@@ -224,7 +226,7 @@ async def test_store_submission_status_with_status_change(
224226 assert updated_status .status == "VALIDATED"
225227 assert updated_status .status != original_status
226228 assert updated_status .etag != original_etag # etag should change
227- assert updated_status .status_version > test_submission_status . status_version
229+ assert updated_status .status_version > original_status_version
228230
229231 async def test_store_submission_status_with_submission_annotations (
230232 self , test_submission_status : SubmissionStatus
@@ -233,17 +235,18 @@ async def test_store_submission_status_with_submission_annotations(
233235 # WHEN I add submission annotations and store
234236 test_submission_status .submission_annotations = {
235237 "score" : 85.5 ,
236- "validation_passed" : [True ],
237238 "feedback" : "Good work!" ,
238239 }
239240 updated_status = test_submission_status .store (synapse_client = self .syn )
240241
241242 # THEN the submission annotations should be saved
242243 assert updated_status .submission_annotations is not None
243- assert "score" in updated_status .submission_annotations
244- assert updated_status .submission_annotations ["score" ] == [85.5 ]
245- assert updated_status .submission_annotations ["validation_passed" ] == [True ]
246- assert updated_status .submission_annotations ["feedback" ] == ["Good work!" ]
244+ converted_submission_annotations = from_submission_status_annotations (
245+ updated_status .submission_annotations
246+ )
247+ assert "score" in converted_submission_annotations
248+ assert converted_submission_annotations ["score" ] == [85.5 ]
249+ assert converted_submission_annotations ["feedback" ] == ["Good work!" ]
247250
248251 async def test_store_submission_status_with_legacy_annotations (
249252 self , test_submission_status : SubmissionStatus
@@ -255,12 +258,16 @@ async def test_store_submission_status_with_legacy_annotations(
255258 "reviewer_notes" : "Excellent submission" ,
256259 }
257260 updated_status = test_submission_status .store (synapse_client = self .syn )
261+ assert updated_status .annotations is not None
262+
263+ converted_annotations = from_submission_status_annotations (
264+ updated_status .annotations
265+ )
258266
259267 # THEN the legacy annotations should be saved
260- assert updated_status .annotations is not None
261- assert "internal_score" in updated_status .annotations
262- assert updated_status .annotations ["internal_score" ] == [92.3 ]
263- assert updated_status .annotations ["reviewer_notes" ] == ["Excellent submission" ]
268+ assert "internal_score" in converted_annotations
269+ assert converted_annotations ["internal_score" ] == 92.3
270+ assert converted_annotations ["reviewer_notes" ] == "Excellent submission"
264271
265272 async def test_store_submission_status_with_combined_annotations (
266273 self , test_submission_status : SubmissionStatus
@@ -279,12 +286,18 @@ async def test_store_submission_status_with_combined_annotations(
279286
280287 # THEN both types of annotations should be saved
281288 assert updated_status .submission_annotations is not None
282- assert "public_score" in updated_status .submission_annotations
283- assert updated_status .submission_annotations ["public_score" ] == [78.0 ]
289+ converted_submission_annotations = from_submission_status_annotations (
290+ updated_status .submission_annotations
291+ )
292+ assert "public_score" in converted_submission_annotations
293+ assert converted_submission_annotations ["public_score" ] == [78.0 ]
284294
285295 assert updated_status .annotations is not None
286- assert "internal_review" in updated_status .annotations
287- assert updated_status .annotations ["internal_review" ] == [True ]
296+ converted_annotations = from_submission_status_annotations (
297+ updated_status .annotations
298+ )
299+ assert "internal_review" in converted_annotations
300+ assert converted_annotations ["internal_review" ] == "true"
288301
289302 async def test_store_submission_status_with_private_annotations_false (
290303 self , test_submission_status : SubmissionStatus
@@ -557,8 +570,11 @@ async def test_batch_update_submission_statuses(
557570 synapse_client = self .syn
558571 )
559572 assert updated_status .status == "VALIDATED"
560- assert "batch_score" in updated_status .submission_annotations
561- assert updated_status .submission_annotations ["batch_processed" ] == [True ]
573+ converted_submission_annotations = from_submission_status_annotations (
574+ updated_status .submission_annotations
575+ )
576+ assert "batch_score" in converted_submission_annotations
577+ assert converted_submission_annotations ["batch_processed" ] == ["true" ]
562578
563579 async def test_batch_update_submission_statuses_large_batch (
564580 self , test_evaluation : Evaluation
0 commit comments