diff --git a/Changelog.md b/Changelog.md index 8d1777c5ed..91bf422e62 100644 --- a/Changelog.md +++ b/Changelog.md @@ -28,6 +28,7 @@ - Fix: include original total mark in JSON response for remark requests (#7945) ### 🔧 Internal changes +- Added tests for `graders_controller` to fully cover `grader_criteria_mapping` function (#7949) - Added tests for `GradersController` to fully cover `grader_groupers_mapping` (#7946) - Added seed task to assign TAs to A1 groupings and criteria (#7867) - Updated autotest seed files to ensure settings follow tester JSON schema (#7775) diff --git a/doc/markus-contributors.txt b/doc/markus-contributors.txt index 940851a2d5..3915d2ac4e 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 c1600497f9..9a10099cdd 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) @@ -53,6 +58,34 @@ expect(assigns(:assignment)).not_to be_nil end + it 'doing a GET on :grader_criteria_mapping' do + 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 + + 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([ + [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 it_behaves_like 'a controller supporting upload' do let(:params) { { course_id: course.id, assignment_id: @assignment.id, model: TaMembership, groupings: true } }