add override_grade field to GradesType
closes GRADE-2003 Test Plan - Enable Final Grade Overrides feature. - Enable a grading scheme. - Assign an override grade to one student, and have another student on hand that does not have an override grade. - Run a query for override scores/grades on both students: query { legacyNode(_id: `enrollment_id`, type: Enrollment) { ... on Enrollment { user { name } grades { overrideScore overrideGrade } } } } - Verify that the student with an override grade has it here. - Verify that the student without an override grade does not have it here. - Disable the grading scheme and verify that the override grade is null. Change-Id: I8b7e824095c044e24f08e59f21d25347a3f3b9b9 Reviewed-on: https://gerrit.instructure.com/181747 Reviewed-by: Cameron Matheson <cameron@instructure.com> Reviewed-by: Keith Garner <kgarner@instructure.com> Tested-by: Jenkins QA-Review: Gary Mei <gmei@instructure.com> Product-Review: Keith Garner <kgarner@instructure.com>
This commit is contained in:
parent
fa6254f21e
commit
68398f3e87
|
@ -46,6 +46,14 @@ module Types
|
|||
The override score. Supersedes the computed final score if set.
|
||||
DESC
|
||||
|
||||
field :override_grade, String, <<~DESC, null: true
|
||||
The override grade. Supersedes the computed final grade if set.
|
||||
DESC
|
||||
def override_grade
|
||||
return nil if override_score.blank?
|
||||
object.effective_final_grade
|
||||
end
|
||||
|
||||
field :grading_period, GradingPeriodType, null: true
|
||||
def grading_period
|
||||
load_association :grading_period
|
||||
|
|
|
@ -836,6 +836,11 @@ type Grades {
|
|||
finalScore: Float
|
||||
gradingPeriod: GradingPeriod
|
||||
|
||||
"""
|
||||
The override grade. Supersedes the computed final grade if set.
|
||||
"""
|
||||
overrideGrade: String
|
||||
|
||||
"""
|
||||
The override score. Supersedes the computed final score if set.
|
||||
"""
|
||||
|
|
|
@ -23,6 +23,7 @@ describe Types::GradesType do
|
|||
let!(:account) { Account.create! }
|
||||
let!(:course) { account.courses.create!(grading_standard_enabled: true) }
|
||||
let!(:student_enrollment) { course.enroll_student(User.create!, enrollment_state: 'active') }
|
||||
let!(:score) { student_enrollment.find_score(grading_period_id: grading_period.id) }
|
||||
let!(:grading_period) do
|
||||
group = account.grading_period_groups.create!(title: "a test group")
|
||||
group.enrollment_terms << course.enrollment_term
|
||||
|
@ -39,7 +40,6 @@ describe Types::GradesType do
|
|||
let(:enrollment_type) { GraphQLTypeTester.new(student_enrollment, current_user: teacher) }
|
||||
|
||||
before(:each) do
|
||||
score = student_enrollment.find_score(grading_period_id: grading_period.id)
|
||||
score.update!(
|
||||
current_score: 68.0,
|
||||
final_score: 78.1,
|
||||
|
@ -66,6 +66,20 @@ describe Types::GradesType do
|
|||
expect(resolve_grades_field("overrideScore")).to eq 88.2
|
||||
end
|
||||
|
||||
it "resolves the overrideGrade field to the corresponding Score's override grade" do
|
||||
expect(resolve_grades_field("overrideGrade")).to eq "B+"
|
||||
end
|
||||
|
||||
it "resolves the overrideGrade field to nil when grading standards are not enabled" do
|
||||
course.update!(grading_standard_id: nil)
|
||||
expect(resolve_grades_field("overrideGrade")).to be nil
|
||||
end
|
||||
|
||||
it "resolves the overrideGrade field to nil when an override score is not present" do
|
||||
score.update!(override_score: nil)
|
||||
expect(resolve_grades_field("overrideGrade")).to be nil
|
||||
end
|
||||
|
||||
it "resolves the unpostedCurrentScore field to the corresponding Score's unposted_current_score" do
|
||||
expect(resolve_grades_field("unpostedCurrentScore")).to eq 71.3
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue