diff --git a/app/graphql/interfaces/submission_interface.rb b/app/graphql/interfaces/submission_interface.rb index 838022253f74b..d63c55d889e92 100644 --- a/app/graphql/interfaces/submission_interface.rb +++ b/app/graphql/interfaces/submission_interface.rb @@ -767,4 +767,9 @@ def version_query_param(submission) submission.attempt end end + + field :grader, Types::UserType, null: true + def graded_by + load_association(:grader) + end end diff --git a/schema.graphql b/schema.graphql index d933081d43900..344402fad6a54 100644 --- a/schema.graphql +++ b/schema.graphql @@ -10658,6 +10658,7 @@ type Submission implements LegacyIDInterface & Node & SubmissionInterface & Time gradeMatchesCurrentSubmission: Boolean gradedAnonymously: Boolean gradedAt: DateTime + grader: User gradingPeriodId: ID gradingStatus: SubmissionGradingStatus groupId: ID diff --git a/spec/graphql/types/submission_type_spec.rb b/spec/graphql/types/submission_type_spec.rb index d75f4a13d4750..5a5bc51e5097b 100644 --- a/spec/graphql/types/submission_type_spec.rb +++ b/spec/graphql/types/submission_type_spec.rb @@ -2827,4 +2827,20 @@ expect(type.resolve("aiGradeResult { attempt }")).to be_nil end end + + describe "grader" do + it "returns user for graded submission" do + expect(submission_type.resolve("grader { _id }")).to eq @teacher.id.to_s + end + + it "returns nil for ungraded submissions" do + @submission.update!(grader_id: nil) + expect(submission_type.resolve("grader { _id }")).to be_nil + end + + it "returns nil for automarked submissions" do + @submission.update!(grader_id: -1) + expect(submission_type.resolve("grader { _id }")).to be_nil + end + end end