From 67dd8566b604193089e7d9cca7ab62f4a4972462 Mon Sep 17 00:00:00 2001 From: Janis4411 Date: Wed, 20 Jul 2022 10:08:59 +0200 Subject: [PATCH] added a test scenario to check if autosave submissions are being toggled right --- spec/controllers/exercises_controller_spec.rb | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/spec/controllers/exercises_controller_spec.rb b/spec/controllers/exercises_controller_spec.rb index 847dc805..e2404225 100644 --- a/spec/controllers/exercises_controller_spec.rb +++ b/spec/controllers/exercises_controller_spec.rb @@ -236,6 +236,40 @@ describe ExercisesController do expect_template(:statistics) end + describe 'GET #statistics for external users' do + let(:perform_request) { get :statistics, params: params } + let(:params) { {id: exercise.id, external_user_id: external_user.id} } + let(:external_user) { create(:external_user) } + + before do + 2.times { create(:submission, cause: 'autosave', user: external_user, exercise: exercise) } + 2.times { create(:submission, cause: 'run', user: external_user, exercise: exercise) } + create(:submission, cause: 'assess', user: external_user, exercise: exercise) + end + + context 'when viewing the default submission statistics page without a parameter' do + it 'does not list autosaved submissions' do + perform_request + expect(assigns(:submissions)).to match_array [ + an_object_having_attributes(cause: 'run', user_id: external_user.id), + an_object_having_attributes(cause: 'assess', user_id: external_user.id), + an_object_having_attributes(cause: 'run', user_id: external_user.id), + ] + end + end + + context 'when including autosaved submissions via the query parameter' do + let(:params) { super().merge(show_autosaves: 'true') } + + it 'lists all submissions, including autosaved submissions' do + perform_request + submissions = assigns(:submissions) + expect(submissions).to match_array Submission.all + expect(submissions).to include an_object_having_attributes(cause: 'autosave', user_id: external_user.id) + end + end + end + describe 'POST #submit' do let(:output) { {} } let(:perform_request) { post :submit, format: :json, params: {id: exercise.id, submission: {cause: 'submit', exercise_id: exercise.id}} }