diff --git a/app/models/school_project.rb b/app/models/school_project.rb index c5d41d08..52aceb96 100644 --- a/app/models/school_project.rb +++ b/app/models/school_project.rb @@ -4,7 +4,7 @@ class SchoolProject < ApplicationRecord belongs_to :school belongs_to :project has_many :feedback, dependent: :destroy - has_many :school_project_transitions, autosave: false, dependent: :nullify + has_many :school_project_transitions, autosave: false, dependent: :destroy include Statesman::Adapters::ActiveRecordQueries[ transition_class: ::SchoolProjectTransition, diff --git a/spec/models/school_project_spec.rb b/spec/models/school_project_spec.rb index 6d1eba00..8cc78549 100644 --- a/spec/models/school_project_spec.rb +++ b/spec/models/school_project_spec.rb @@ -20,7 +20,7 @@ it { is_expected.to belong_to(:school) } it { is_expected.to belong_to(:project) } it { is_expected.to have_many(:feedback).dependent(:destroy) } - it { is_expected.to have_many(:school_project_transitions).dependent(:nullify) } + it { is_expected.to have_many(:school_project_transitions).dependent(:destroy) } describe '#status' do it 'defaults to unsubmitted' do diff --git a/spec/services/student_removal_service_spec.rb b/spec/services/student_removal_service_spec.rb index 00002488..ec493d5c 100644 --- a/spec/services/student_removal_service_spec.rb +++ b/spec/services/student_removal_service_spec.rb @@ -79,6 +79,22 @@ # Other student's project should remain expect(Project.exists?(other_school_project.id)).to be true end + + it 'deletes school project transitions when deleting projects' do + project = create(:project, user_id: student.id, school: school) + school_project = project.school_project + + # Transition the project to create SchoolProjectTransition records + school_project.transition_status_to!(:submitted, student.id) + school_project.transition_status_to!(:returned, teacher.id) + + results = service.remove_students + + expect(results.first[:error]).to be_nil + expect(Project.exists?(project.id)).to be false + expect(SchoolProject.exists?(school_project.id)).to be false + expect(SchoolProjectTransition.where(school_project_id: school_project.id).count).to eq(0) + end end context 'when student does not have a role in the school' do