From 7726e21f6ef58e9962fda169e3cde8b62ffd1de7 Mon Sep 17 00:00:00 2001 From: Samuel Maldonado Date: Mon, 24 Jun 2024 17:16:05 -0400 Subject: [PATCH 1/3] do not overwrite max_mark in grade summary --- app/models/result.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/result.rb b/app/models/result.rb index 9c5a2892bb..0988df5762 100644 --- a/app/models/result.rb +++ b/app/models/result.rb @@ -129,7 +129,6 @@ def self.get_total_extra_marks(result_ids, max_mark: nil, user_visibility: :ta_v max_mark_hash[assessment_id] ||= Assignment.find(assessment_id)&.max_mark(user_visibility) assignment_max_mark = max_mark_hash[assessment_id] end - max_mark = max_mark_hash[assessment_id] extra_marks_hash[id] += (extra_mark * assignment_max_mark / 100).round(2) end end From a876d3063ab548b3c1853c38ede521e2fdf4c5ac Mon Sep 17 00:00:00 2001 From: Samuel Maldonado Date: Tue, 25 Jun 2024 11:35:02 -0400 Subject: [PATCH 2/3] tests: add tests --- .../course_summaries_controller_spec.rb | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/spec/controllers/course_summaries_controller_spec.rb b/spec/controllers/course_summaries_controller_spec.rb index a688cbf00d..b9b5e79351 100644 --- a/spec/controllers/course_summaries_controller_spec.rb +++ b/spec/controllers/course_summaries_controller_spec.rb @@ -171,6 +171,59 @@ end end end + + context 'when there are percentage extra_marks' do + before do + assignments = create_list(:assignment_with_criteria_and_results, 3) + create(:grouping_with_inviter_and_submission, assignment: assignments[0]) + create_list(:grade_entry_form_with_data, 2) + create(:grade_entry_form) + create(:marking_scheme, assessments: Assessment.all) + assignments.first.criteria.first.update!(max_mark: 3.0) + assignments.second.criteria.first.update!(max_mark: 2.0) + assignments.third.criteria.first.update!(max_mark: 5.0) + assignments.each do |assignment| + create(:extra_mark, result: assignment.groupings.first.current_result) + end + + get_as instructor, :populate, params: { course_id: course.id }, format: :json + @response_data = response.parsed_body.deep_symbolize_keys + @data = @response_data[:data] + end + + it 'returns the correct grades' do + expect(@data.length).to eq Student.count + Student.find_each do |student| + expected = { + id: student.id, + id_number: student.id_number, + user_name: student.user_name, + first_name: student.first_name, + last_name: student.last_name, + section_name: student.section_name, + email: student.email, + hidden: student.hidden, + assessment_marks: GradeEntryForm.all.map do |ges| + total_grade = ges.grade_entry_students.find_by(role: student).get_total_grade + out_of = ges.grade_entry_items.sum(:out_of) + percent = total_grade.nil? || out_of.nil? ? nil : (total_grade * 100 / out_of).round(2) + [ges.id.to_s.to_sym, { + mark: total_grade, + percentage: percent + }] + end.to_h + } + student.accepted_groupings.each do |g| + mark = g.current_result.get_total_mark + expected[:assessment_marks][g.assessment_id.to_s.to_sym] = { + mark: mark, + percentage: (mark * 100 / g.assignment.max_mark).round(2).to_s + } + end + expect(@data.map { |h| h.except(:weighted_marks) }).to include expected + end + end + end end end From f954e09e7d431a0e416b34000d6a43e3d374401d Mon Sep 17 00:00:00 2001 From: Samuel Maldonado Date: Tue, 25 Jun 2024 11:37:45 -0400 Subject: [PATCH 3/3] changelog: update changelog --- Changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog.md b/Changelog.md index b01e34d4dd..b27bd476d8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -28,6 +28,7 @@ - Ensure annotation rendering is updated in real-time for Jupyter notebooks (#7084) - Fix MathJax rendering in annotations for Jupyter notebooks (#7084) - Fix MathJax rendering of released overall comments (#7084) +- Fix bug in grade display for marks summary (#7125) ### 🔧 Internal changes