diff --git a/src/LtiGrade.php b/src/LtiGrade.php index 4d17e348..153cddfb 100644 --- a/src/LtiGrade.php +++ b/src/LtiGrade.php @@ -16,6 +16,7 @@ class LtiGrade private $user_id; private $submission_review; private $canvas_extension; + private $submission; public function __construct(?array $grade = null) { @@ -28,6 +29,7 @@ public function __construct(?array $grade = null) $this->user_id = $grade['userId'] ?? null; $this->submission_review = $grade['submissionReview'] ?? null; $this->canvas_extension = $grade['https://canvas.instructure.com/lti/submission'] ?? null; + $this->submission = $grade['submission'] ?? null; } public function getArray(): array @@ -42,6 +44,7 @@ public function getArray(): array 'userId' => $this->user_id, 'submissionReview' => $this->submission_review, 'https://canvas.instructure.com/lti/submission' => $this->canvas_extension, + 'submission' => $this->submission, ]; } @@ -169,4 +172,24 @@ public function setCanvasExtension($value): self return $this; } + + /** + * @return array{startedAt?: ?string, submittedAt?: ?string}|null + */ + public function getSubmission() + { + return $this->submission; + } + + /** + * @param array{startedAt?: ?string, submittedAt?: ?string} $value + * + * @see https://www.imsglobal.org/spec/lti-ags/v2p0 + */ + public function setSubmission($value): self + { + $this->submission = $value; + + return $this; + } } diff --git a/tests/LtiGradeTest.php b/tests/LtiGradeTest.php index 1635b493..374e2f13 100644 --- a/tests/LtiGradeTest.php +++ b/tests/LtiGradeTest.php @@ -207,6 +207,10 @@ public function test_it_casts_full_object_to_string() 'userId' => 'UserId', 'submissionReview' => 'SubmissionReview', 'https://canvas.instructure.com/lti/submission' => 'CanvasExtension', + 'submission' => [ + 'startedAt' => '2023-01-15T12:30:45Z', + 'submittedAt' => '2023-01-15T13:15:22Z', + ], ]; $grade = new LtiGrade($expected); @@ -226,6 +230,10 @@ public function test_it_casts_full_object_to_string_with0_grade() 'userId' => 'UserId', 'submissionReview' => 'SubmissionReview', 'https://canvas.instructure.com/lti/submission' => 'CanvasExtension', + 'submission' => [ + 'startedAt' => '2023-01-15T12:30:45Z', + 'submittedAt' => '2023-01-15T13:15:22Z', + ], ]; $grade = new LtiGrade($expected); @@ -237,4 +245,30 @@ public function test_it_casts_empty_object_to_string() { $this->assertEquals('[]', (string) $this->grade); } + + public function test_it_gets_submission() + { + $expected = [ + 'startedAt' => '2023-01-15T12:30:45Z', + 'submittedAt' => '2023-01-15T13:15:22Z', + ]; + $grade = new LtiGrade(['submission' => $expected]); + + $result = $grade->getSubmission(); + + $this->assertEquals($expected, $result); + } + + public function test_it_sets_submission() + { + $expected = [ + 'startedAt' => '2023-01-15T12:30:45Z', + 'submittedAt' => '2023-01-15T13:15:22Z', + ]; + + $this->grade->setSubmission($expected); + + $this->assertEquals($expected, $this->grade->getSubmission()); + } + }