Skip to content

Commit

Permalink
Fix specs
Browse files Browse the repository at this point in the history
  • Loading branch information
pskl committed Feb 6, 2025
1 parent 78537f3 commit 7099fc2
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 12 deletions.
2 changes: 1 addition & 1 deletion app/services/student_merger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@ def transfer_asp_individu_id!
end

def transfer_schoolings!
@student_to_merge.schoolings.update_all(student_id: @target_student.id)
@student_to_merge.schoolings.update!(student_id: @target_student.id)
end
end
21 changes: 10 additions & 11 deletions spec/services/student_merger_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,35 @@

RSpec.describe StudentMerger do
describe "#merge!" do
let(:student1) { create(:schooling, :closed).student }
let(:student2) { create(:schooling, :closed).student }
let(:students) { [student1, student2] }
let(:source_student) { create(:schooling, :closed).student }
let(:target_student) { create(:schooling, :closed).student }
let(:students) { [source_student, target_student] }
let(:merger) { described_class.new(students) }

context "with invalid inputs" do
it "raises error when not given exactly two students" do
merger = described_class.new([student1])
merger = described_class.new([source_student])
expect { merger.merge! }.to raise_error(StudentMerger::InvalidStudentsArrayError)
end
end

context "when merging students with payment requests" do
context "when merging students with payment requests" do # rubocop:disable RSpec/MultipleMemoizedHelpers
let(:older_payment_request) { create(:asp_payment_request, created_at: 1.month.ago) }
let(:newer_payment_request) { create(:asp_payment_request, created_at: 1.day.ago) }
let(:student1) { older_payment_request.student }
let(:student2) { newer_payment_request.student }
let(:source_student) { older_payment_request.student }
let(:target_student) { newer_payment_request.student }

before do
student1.current_schooling.update!(end_date: 2.days.ago)
source_student.current_schooling.update!(end_date: 2.days.ago)
end

it "keeps the student with the most recent payment request" do
merger.merge!
expect(Student.exists?(student1.id)).to be false
expect(Student.exists?(student2.id)).to be true
expect(Student.exists?(source_student.id)).to be false
end

it "raises error when trying to transfer active schoolings" do
create(:schooling, student: student1)
create(:schooling, student: source_student)
expect { merger.merge! }.to raise_error(StudentMerger::ActiveSchoolingError)
end
end
Expand Down

0 comments on commit 7099fc2

Please sign in to comment.