Skip to content

Commit cae2bba

Browse files
[MBL-19889][Teacher] Fix SpeedGrader grading status showing Graded when grade is null
refs: MBL-19889 affects: Teacher release note: Fixed an issue where SpeedGrader incorrectly displayed a submission as "Graded" when the teacher had only left a comment without assigning an actual grade.
1 parent df6c665 commit cae2bba

4 files changed

Lines changed: 25 additions & 6 deletions

File tree

automation/espresso/src/main/kotlin/com/instructure/canvas/espresso/mockcanvas/fakes/FakeSubmissionContentManager.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ class FakeSubmissionContentManager : SubmissionContentManager {
136136
mediaObject = mediaObject,
137137
user = user,
138138
assignment = fragmentAssignment,
139-
customGradeStatus = null
139+
customGradeStatus = null,
140+
grade = submission?.grade
140141
)
141142

142143
val edges = if (submissionHistory.isNotEmpty()) {

libs/canvas-api-2/src/main/graphql/com/instructure/canvasapi2/SubmissionContentQuery.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ query SubmissionContent(
4545
fragment SubmissionFields on SubmissionInterface {
4646
groupId
4747
state
48+
grade
4849
attempt
4950
body
5051
url

libs/pandautils/src/main/java/com/instructure/pandautils/features/speedgrader/content/SpeedGraderContentViewModel.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ class SpeedGraderContentViewModel @Inject constructor(
173173
submissionState = getSubmissionStateLabel(
174174
submissionFields?.state,
175175
submissionFields?.customGradeStatus,
176-
submissionFields?.statusTag
176+
submissionFields?.statusTag,
177+
submissionFields?.grade
177178
),
178179
dueDate = submissionFields?.assignment?.dueAt,
179180
attachmentSelectorUiState = SelectorUiState(
@@ -202,7 +203,8 @@ class SpeedGraderContentViewModel @Inject constructor(
202203
submissionState = getSubmissionStateLabel(
203204
submissionFields?.state,
204205
submissionFields?.customGradeStatus,
205-
submissionFields?.statusTag
206+
submissionFields?.statusTag,
207+
submissionFields?.grade
206208
)
207209
)
208210
}
@@ -211,7 +213,8 @@ class SpeedGraderContentViewModel @Inject constructor(
211213
private fun getSubmissionStateLabel(
212214
submissionState: SubmissionState?,
213215
customGradeStatus: String?,
214-
statusTag: SubmissionStatusTagType?
216+
statusTag: SubmissionStatusTagType?,
217+
grade: String?
215218
): SubmissionStateLabel {
216219
return when {
217220
statusTag == SubmissionStatusTagType.excused -> SubmissionStateLabel.Excused
@@ -222,15 +225,16 @@ class SpeedGraderContentViewModel @Inject constructor(
222225
customGradeStatus
223226
)
224227

225-
submissionState == SubmissionState.graded -> SubmissionStateLabel.Graded
228+
submissionState == SubmissionState.graded && grade != null -> SubmissionStateLabel.Graded
226229

227230
statusTag == SubmissionStatusTagType.late -> SubmissionStateLabel.Late
228231
statusTag == SubmissionStatusTagType.missing -> SubmissionStateLabel.Missing
229232

230233
submissionState in setOf(
231234
SubmissionState.submitted,
232235
SubmissionState.ungraded,
233-
SubmissionState.pending_review
236+
SubmissionState.pending_review,
237+
SubmissionState.graded
234238
) -> SubmissionStateLabel.Submitted
235239

236240
submissionState == SubmissionState.unsubmitted -> SubmissionStateLabel.NotSubmitted

libs/pandautils/src/test/java/com/instructure/pandautils/features/speedgrader/content/SpeedGraderContentViewModelTest.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,13 +354,25 @@ class SpeedGraderContentViewModelTest {
354354
@Test
355355
fun `fetchData updates uiState with GRADED state`() = runTest {
356356
coEvery { submissionFields.state } returns SubmissionState.graded
357+
coEvery { submissionFields.grade } returns "A"
357358
coEvery { repository.getSubmission(assignmentId, studentId) } returns submissionData
358359

359360
createViewModel()
360361

361362
assertEquals(SubmissionStateLabel.Graded, viewModel.uiState.value.submissionState)
362363
}
363364

365+
@Test
366+
fun `fetchData updates uiState with Submitted state when workflow state is graded but grade is null`() = runTest {
367+
coEvery { submissionFields.state } returns SubmissionState.graded
368+
coEvery { submissionFields.grade } returns null
369+
coEvery { repository.getSubmission(assignmentId, studentId) } returns submissionData
370+
371+
createViewModel()
372+
373+
assertEquals(SubmissionStateLabel.Submitted, viewModel.uiState.value.submissionState)
374+
}
375+
364376
@Test
365377
fun `fetchData updates uiState with NONE state when submission state is null`() = runTest {
366378
coEvery { submissionFields.state } returns SubmissionState.UNKNOWN__
@@ -482,6 +494,7 @@ class SpeedGraderContentViewModelTest {
482494
assertEquals(SubmissionStateLabel.Submitted, viewModel.uiState.value.submissionState)
483495

484496
coEvery { submissionFields.state } returns SubmissionState.graded
497+
coEvery { submissionFields.grade } returns "A"
485498

486499
gradingEventHandler.postEvent(GradingEvent.GradeChanged)
487500

0 commit comments

Comments
 (0)