80 lines
2.4 KiB
Ruby
80 lines
2.4 KiB
Ruby
RSpec.describe RecoveryService, type: :service do
|
|
describe '.recoverable_procedures' do
|
|
subject { described_class.recoverable_procedures(previous_user:, siret:) }
|
|
|
|
context 'when the previous_user is nil' do
|
|
let(:previous_user) { nil }
|
|
let(:siret) { '123' }
|
|
|
|
it 'returns []' do
|
|
expect(subject).to eq([])
|
|
end
|
|
end
|
|
|
|
context 'when the previous_user has some dossiers' do
|
|
let(:previous_user) { create(:user) }
|
|
|
|
let(:procedure_1) { create(:procedure) }
|
|
let(:siret) { '123' }
|
|
|
|
let(:procedure_2) { create(:procedure) }
|
|
let(:another_siret) { 'another_123' }
|
|
|
|
before do
|
|
3.times do
|
|
create(:dossier, procedure: procedure_1,
|
|
etablissement: create(:etablissement, siret:),
|
|
user: previous_user)
|
|
end
|
|
|
|
create(:dossier, procedure: procedure_2,
|
|
etablissement: create(:etablissement, siret: another_siret),
|
|
user: previous_user)
|
|
end
|
|
|
|
it 'returns the procedures with their count' do
|
|
expect(subject).to eq([{ procedure_id: procedure_1.id, libelle: procedure_1.libelle, count: 3 }])
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '.recover_procedure!' do
|
|
subject { described_class.recover_procedure!(previous_user:, next_user:, siret:, procedure_ids:) }
|
|
|
|
context 'when the previous_user has some dossiers' do
|
|
let!(:previous_user) { create(:user) }
|
|
let!(:next_user) { create(:user) }
|
|
|
|
let!(:procedure_1) { create(:procedure) }
|
|
let!(:siret) { '123' }
|
|
|
|
let!(:procedure_2) { create(:procedure) }
|
|
let!(:another_siret) { 'another_123' }
|
|
|
|
let!(:dossiers_to_recover) do
|
|
3.times do
|
|
create(:dossier, procedure: procedure_1,
|
|
etablissement: create(:etablissement, siret:),
|
|
user: previous_user)
|
|
end
|
|
end
|
|
|
|
let!(:dossiers_not_to_recover) do
|
|
create(:dossier, procedure: procedure_2,
|
|
etablissement: create(:etablissement, siret: another_siret),
|
|
user: previous_user)
|
|
end
|
|
|
|
let(:procedure_ids) { [procedure_1.id] }
|
|
|
|
it 'moves the files to the next user' do
|
|
subject
|
|
expect(next_user.dossiers.count).to eq(3)
|
|
|
|
dossier_transfer_log = next_user.dossiers.first.transfer_logs.first
|
|
expect(dossier_transfer_log.from).to eq(previous_user.email)
|
|
expect(dossier_transfer_log.to).to eq(next_user.email)
|
|
end
|
|
end
|
|
end
|
|
end
|