From 27cfd14480dbb5b59d671762e25d9f0be2263805 Mon Sep 17 00:00:00 2001 From: mrafie1 Date: Wed, 13 May 2026 16:06:07 -0400 Subject: [PATCH 1/4] Added tests to fully cover graders_controller criteria mapping function --- doc/markus-contributors.txt | 1 + spec/controllers/graders_controller_spec.rb | 33 +++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/doc/markus-contributors.txt b/doc/markus-contributors.txt index 40bce9dcac..90283d497c 100644 --- a/doc/markus-contributors.txt +++ b/doc/markus-contributors.txt @@ -158,6 +158,7 @@ Mimis Chlympatsos Mina Almasry Misa Sakamoto Misha Schwartz +Muhammad Rafie Nathan ChowNeha Kumar Neha Kumar Nelle Varoquaux diff --git a/spec/controllers/graders_controller_spec.rb b/spec/controllers/graders_controller_spec.rb index 9028c991c2..b4b4f758a9 100644 --- a/spec/controllers/graders_controller_spec.rb +++ b/spec/controllers/graders_controller_spec.rb @@ -28,6 +28,11 @@ expect(response).to have_http_status(:forbidden) end + it 'GET on :grader_criteria_mapping' do + get_as @student, :grader_criteria_mapping, params: { course_id: course.id, assignment_id: assignment.id } + expect(response).to have_http_status(:forbidden) + end + it 'POST on :global_actions' do post_as @student, :global_actions, params: { course_id: course.id, assignment_id: assignment.id } expect(response).to have_http_status(:forbidden) @@ -48,6 +53,34 @@ expect(assigns(:assignment)).not_to be_nil end + it 'doing a GET on :grader_criteria_mapping' do + @ta1 = create(:ta, user: create(:end_user, user_name: 'g9browni')) + @ta2 = create(:ta, user: create(:end_user, user_name: 'g9younas')) + @ta3 = create(:ta, user: create(:end_user, user_name: 'c7benjam')) + @criterion1 = create(:rubric_criterion, assignment: @assignment, name: 'correctness') + @criterion2 = create(:rubric_criterion, assignment: @assignment, name: 'style') + @criterion3 = create(:rubric_criterion, assignment: @assignment, name: 'class design') + + @criterion1.tas << [@ta1, @ta2] + @criterion2.tas << @ta1 + @criterion3.tas << @ta3 + + get_as @instructor, :grader_criteria_mapping, params: { course_id: course.id, assignment_id: @assignment.id } + + expect(response).to have_http_status(:ok) + expect(response.content_type).to eq('text/csv') + expect(response.headers['Content-Disposition']).to include('attachment') + expect(response.headers['Content-Disposition']) + .to include("#{@assignment.short_identifier}_grader_criteria_mapping.csv") + + rows = CSV.parse(response.body).map { |row| [row.first, row.drop(1).sort] }.sort + expect(rows).to eq([ + ['class design', ['c7benjam']], + ['correctness', %w[g9browni g9younas]], + ['style', ['g9browni']] + ]) + end + context 'doing a POST on :upload (assigning to groups)' do it_behaves_like 'a controller supporting upload' do let(:params) { { course_id: course.id, assignment_id: @assignment.id, model: TaMembership, groupings: true } } From fe97c3cb9b7d824da1d69c994b8483dfdb21fa1f Mon Sep 17 00:00:00 2001 From: mrafie1 Date: Wed, 13 May 2026 16:47:53 -0400 Subject: [PATCH 2/4] Updated Changelog --- Changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Changelog.md b/Changelog.md index eb59a11fc5..642b06edc6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,6 +7,7 @@ ### 🚨 Breaking changes ### ✨ New features and improvements +- Added tests for `graders_controller` to fully cover `grader_criteria_mapping` function (#7949) - Improve admin user list loading time by replacing ActiveRecord instantiation with direct column extraction (#7897) - Provide suggestions for partial student matching scans (#7760) - Allow inactive students to join groups (#7757) From aaa7c62123ee46a8e0c4409f67fcf83235d2e168 Mon Sep 17 00:00:00 2001 From: mrafie1 Date: Sat, 16 May 2026 01:26:57 -0400 Subject: [PATCH 3/4] Implemented feedback --- Changelog.md | 2 +- spec/controllers/graders_controller_spec.rb | 28 +++++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Changelog.md b/Changelog.md index 642b06edc6..903be25193 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,7 +7,6 @@ ### 🚨 Breaking changes ### ✨ New features and improvements -- Added tests for `graders_controller` to fully cover `grader_criteria_mapping` function (#7949) - Improve admin user list loading time by replacing ActiveRecord instantiation with direct column extraction (#7897) - Provide suggestions for partial student matching scans (#7760) - Allow inactive students to join groups (#7757) @@ -26,6 +25,7 @@ - Fixed filter Canvas Test Student from roster sync (#7926) ### 🔧 Internal changes +- Added tests for `graders_controller` to fully cover `grader_criteria_mapping` function (#7949) - Added seed task to assign TAs to A1 groupings and criteria (#7867) - Updated autotest seed files to ensure settings follow tester JSON schema (#7775) - Refactored grade entry form helper logic into `GradeEntryFormsController` and removed the newly-unused helper file. (#7789) diff --git a/spec/controllers/graders_controller_spec.rb b/spec/controllers/graders_controller_spec.rb index b4b4f758a9..eb052731a0 100644 --- a/spec/controllers/graders_controller_spec.rb +++ b/spec/controllers/graders_controller_spec.rb @@ -54,16 +54,18 @@ end it 'doing a GET on :grader_criteria_mapping' do - @ta1 = create(:ta, user: create(:end_user, user_name: 'g9browni')) - @ta2 = create(:ta, user: create(:end_user, user_name: 'g9younas')) - @ta3 = create(:ta, user: create(:end_user, user_name: 'c7benjam')) - @criterion1 = create(:rubric_criterion, assignment: @assignment, name: 'correctness') - @criterion2 = create(:rubric_criterion, assignment: @assignment, name: 'style') - @criterion3 = create(:rubric_criterion, assignment: @assignment, name: 'class design') + ta1 = create(:ta) + ta2 = create(:ta) + ta3 = create(:ta) + criterion1 = create(:rubric_criterion, assignment: @assignment) + criterion2 = create(:rubric_criterion, assignment: @assignment) + criterion3 = create(:rubric_criterion, assignment: @assignment) - @criterion1.tas << [@ta1, @ta2] - @criterion2.tas << @ta1 - @criterion3.tas << @ta3 + criterion1.tas << [ta1, ta2] + criterion2.tas << ta1 + criterion3.tas << ta3 + + [ta1.user.user_name, ta2.user.user_name].sort get_as @instructor, :grader_criteria_mapping, params: { course_id: course.id, assignment_id: @assignment.id } @@ -75,10 +77,10 @@ rows = CSV.parse(response.body).map { |row| [row.first, row.drop(1).sort] }.sort expect(rows).to eq([ - ['class design', ['c7benjam']], - ['correctness', %w[g9browni g9younas]], - ['style', ['g9browni']] - ]) + [criterion1.name, [ta1.user.user_name, ta2.user.user_name].sort], + [criterion2.name, [ta1.user.user_name]], + [criterion3.name, [ta3.user.user_name]] + ].sort) end context 'doing a POST on :upload (assigning to groups)' do From 665d1c1e81861471ffeadf6db9e1a3be77919f96 Mon Sep 17 00:00:00 2001 From: mrafie1 Date: Sat, 16 May 2026 10:22:38 -0400 Subject: [PATCH 4/4] removed unnecessary line --- spec/controllers/graders_controller_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/controllers/graders_controller_spec.rb b/spec/controllers/graders_controller_spec.rb index eb052731a0..6efb017846 100644 --- a/spec/controllers/graders_controller_spec.rb +++ b/spec/controllers/graders_controller_spec.rb @@ -65,8 +65,6 @@ criterion2.tas << ta1 criterion3.tas << ta3 - [ta1.user.user_name, ta2.user.user_name].sort - get_as @instructor, :grader_criteria_mapping, params: { course_id: course.id, assignment_id: @assignment.id } expect(response).to have_http_status(:ok)