From e767cff3094376c6af7a50591115fe5f6aa275f1 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Sat, 16 Sep 2023 16:57:59 +0200 Subject: [PATCH] Fix flaky tests dependent on exercise.reload for files --- .../code_ocean/files_controller_spec.rb | 19 ++++++++++--------- spec/models/exercise_spec.rb | 6 +++--- spec/policies/exercise_policy_spec.rb | 5 ++++- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/spec/controllers/code_ocean/files_controller_spec.rb b/spec/controllers/code_ocean/files_controller_spec.rb index e230ba5f..db78cf05 100644 --- a/spec/controllers/code_ocean/files_controller_spec.rb +++ b/spec/controllers/code_ocean/files_controller_spec.rb @@ -63,20 +63,21 @@ describe CodeOcean::FilesController do end describe 'DELETE #destroy' do - let(:exercise) { create(:fibonacci) } - let(:perform_request) { proc { delete :destroy, params: {id: exercise.files.first.id} } } + let!(:exercise) { create(:fibonacci) } + let(:perform_request) { proc { delete :destroy, params: {id: exercise.files.reject(&:main_file?).first.id} } } - before { perform_request.call } + context 'with request performed' do + before { perform_request.call } - expect_assigns(file: CodeOcean::File) + expect_assigns(file: CodeOcean::File) - it 'destroys the file' do - create(:fibonacci) - expect { perform_request.call }.to change(CodeOcean::File, :count).by(-1) + it 'redirects to exercise path' do + expect(controller).to redirect_to(exercise) + end end - it 'redirects to exercise path' do - expect(controller).to redirect_to(exercise) + it 'destroys the file' do + expect { perform_request.call }.to change(CodeOcean::File, :count).by(-1) end end end diff --git a/spec/models/exercise_spec.rb b/spec/models/exercise_spec.rb index 6b2aa263..566097f8 100644 --- a/spec/models/exercise_spec.rb +++ b/spec/models/exercise_spec.rb @@ -144,7 +144,7 @@ describe Exercise do before { create(:test_file, context: exercise) } it 'returns true' do - expect(exercise).to be_teacher_defined_assessment + expect(exercise.reload).to be_teacher_defined_assessment end end @@ -152,7 +152,7 @@ describe Exercise do before { create(:test_file, context: exercise, role: 'teacher_defined_linter') } it 'returns true' do - expect(exercise).to be_teacher_defined_assessment + expect(exercise.reload).to be_teacher_defined_assessment end end @@ -163,7 +163,7 @@ describe Exercise do end it 'returns true' do - expect(exercise).to be_teacher_defined_assessment + expect(exercise.reload).to be_teacher_defined_assessment end end end diff --git a/spec/policies/exercise_policy_spec.rb b/spec/policies/exercise_policy_spec.rb index 6d3a6187..1e57cddd 100644 --- a/spec/policies/exercise_policy_spec.rb +++ b/spec/policies/exercise_policy_spec.rb @@ -188,7 +188,10 @@ describe ExercisePolicy do permissions :submit? do context 'when teacher-defined assessments are available' do - before { create(:test_file, context: exercise) } + before do + create(:test_file, context: exercise) + exercise.reload + end it 'grants access to anyone' do %i[admin external_user teacher].each do |factory_name|