From d39a7955183eb2d4677f58477b60a9799978fb63 Mon Sep 17 00:00:00 2001 From: Gary Mei Date: Thu, 21 Jun 2018 09:30:25 -0500 Subject: [PATCH] fix empty rows in new gradebook for soft conclude Soft concluded courses with hard concluded students were returning ids for those hard concluded students while the frontend was only expecting ids for non-hard concluded students. This was causing extra rows to be present in the gradebook, which cascaded into grades not showing up. This changes gradebook_user_ids to be in line with what Gradebook.coffee is expecting. fixes GRADE-1096 Test Plan - Create a course. - Turn on New Gradebook for the course. - Enroll at least two students. - Create an assignment. - Grade both students. - Conclude one student's enrollment. - Go to the course settings and change the course dates to start and end before the current day. - Under the course dates, check the box for "Users can only participate in the course between these dates" - Go back to the Gradebook. - Verify that there are no empty rows and only the students that are not concluded are present. - Set the grid to show concluded enrollments. - Verify that the concluded enrollments now appear. Change-Id: I21ffa7ee52c07947710ff8ec68159fcfe96b0ec8 Reviewed-on: https://gerrit.instructure.com/154679 Reviewed-by: Spencer Olson Reviewed-by: Keith T. Garner Tested-by: Jenkins QA-Review: Derek Bender Product-Review: Keith T. Garner --- lib/gradebook_user_ids.rb | 2 +- spec/lib/gradebook_user_ids_spec.rb | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/gradebook_user_ids.rb b/lib/gradebook_user_ids.rb index 593fb1c3086..9aded488ab7 100644 --- a/lib/gradebook_user_ids.rb +++ b/lib/gradebook_user_ids.rb @@ -130,7 +130,7 @@ class GradebookUserIds def student_enrollments_scope workflow_states = [:active, :invited] workflow_states << :inactive if @include_inactive - workflow_states << :completed if @include_concluded || @course.concluded? + workflow_states << :completed if @include_concluded || @course.completed? student_enrollments = @course.enrollments.where( workflow_state: workflow_states, type: [:StudentEnrollment, :StudentViewEnrollment] diff --git a/spec/lib/gradebook_user_ids_spec.rb b/spec/lib/gradebook_user_ids_spec.rb index 8602703ddbe..d7192d719bc 100644 --- a/spec/lib/gradebook_user_ids_spec.rb +++ b/spec/lib/gradebook_user_ids_spec.rb @@ -237,6 +237,11 @@ describe GradebookUserIds do expect(gradebook_user_ids.user_ids).to include @concluded_student.id end + it "does not include concluded student ids if the course is soft concluded" do + @course.conclude_at = 1.day.ago + expect(gradebook_user_ids.user_ids).not_to include @concluded_student.id + end + context 'with pg_collkey installed' do before do skip 'requires pg_collkey installed SD-2747' unless has_pg_collkey @@ -338,6 +343,11 @@ describe GradebookUserIds do ) end + it "does not include concluded student ids if the course is soft concluded" do + @course.conclude_at = 1.day.ago + expect(gradebook_user_ids.user_ids).not_to include @concluded_student.id + end + context 'when pg_collkey is installed' do before do skip 'requires pg_collkey installed SD-2747' unless has_pg_collkey @@ -426,6 +436,11 @@ describe GradebookUserIds do ) end + it "does not include concluded student ids if the course is soft concluded" do + @course.conclude_at = 1.day.ago + expect(gradebook_user_ids.user_ids).not_to include @concluded_student.id + end + context 'when pg_collkey is installed' do before do skip 'requires pg_collkey installed SD-2747' unless has_pg_collkey @@ -484,6 +499,11 @@ describe GradebookUserIds do ) end + it "does not include concluded student ids if the course is soft concluded" do + @course.conclude_at = 1.day.ago + expect(gradebook_user_ids.user_ids).not_to include @concluded_student.id + end + context "ascending" do before(:once) do @teacher.preferences[:gradebook_settings][@course.id][:sort_rows_by_direction] = "ascending" @@ -801,6 +821,11 @@ describe GradebookUserIds do expect(gradebook_user_ids.user_ids).to include @concluded_student.id end + it "does not include concluded student ids if the course is soft concluded" do + @course.conclude_at = 1.day.ago + expect(gradebook_user_ids.user_ids).not_to include @concluded_student.id + end + context "Multiple Grading Periods" do before(:once) do term = @course.enrollment_term