88 lines
2.6 KiB
Ruby
88 lines
2.6 KiB
Ruby
|
describe DossierOperationLog, type: :model do
|
||
|
describe '.purge_discarded' do
|
||
|
let(:dossier) { create(:dossier) }
|
||
|
let!(:witness_dossier) do
|
||
|
d = create(:dossier)
|
||
|
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier: d,
|
||
|
operation: DossierOperationLog.operations[:passer_en_instruction],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier: d,
|
||
|
operation: DossierOperationLog.operations[:supprimer],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
d
|
||
|
end
|
||
|
|
||
|
let(:instructeur) { create(:instructeur) }
|
||
|
|
||
|
def dols = dossier.dossier_operation_logs.reload
|
||
|
def supprimer_dol = dols.find_by(operation: 'supprimer')
|
||
|
def witness_dols = witness_dossier.dossier_operation_logs.reload
|
||
|
def witness_supprimer_dol = witness_dols.find_by(operation: 'supprimer')
|
||
|
|
||
|
it 'purges all operations but supprimer' do
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier:,
|
||
|
operation: DossierOperationLog.operations[:passer_en_instruction],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier:,
|
||
|
operation: DossierOperationLog.operations[:supprimer],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
expect(dols.count).to eq(2)
|
||
|
|
||
|
dols.purge_discarded
|
||
|
|
||
|
expect(dols.map(&:operation)).to match_array('supprimer')
|
||
|
expect(witness_dols.map(&:operation)).to match_array(['passer_en_instruction', 'supprimer'])
|
||
|
end
|
||
|
|
||
|
it 'destroys the serialized json from supprimer dol' do
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier:,
|
||
|
operation: DossierOperationLog.operations[:supprimer],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
# serialize data attribute to json and store it to cold storage
|
||
|
perform_enqueued_jobs do
|
||
|
dols.each(&:move_to_cold_storage!)
|
||
|
witness_dols.each(&:move_to_cold_storage!)
|
||
|
end
|
||
|
|
||
|
expect(supprimer_dol.serialized.attached?).to be true
|
||
|
|
||
|
perform_enqueued_jobs { dols.purge_discarded }
|
||
|
|
||
|
expect(supprimer_dol.serialized.attached?).to be false
|
||
|
expect(witness_supprimer_dol.serialized.attached?).to be true
|
||
|
end
|
||
|
|
||
|
it 'nillifies the data attribut of not net seriaized supprimer dol' do
|
||
|
DossierOperationLog.create_and_serialize(
|
||
|
dossier:,
|
||
|
operation: DossierOperationLog.operations[:supprimer],
|
||
|
author: instructeur
|
||
|
)
|
||
|
|
||
|
expect(supprimer_dol.data).to be_present
|
||
|
|
||
|
dols.purge_discarded
|
||
|
|
||
|
expect(supprimer_dol.serialized.attached?).to be false
|
||
|
expect(supprimer_dol.data).to be_nil
|
||
|
expect(witness_supprimer_dol.data).to be_present
|
||
|
end
|
||
|
end
|
||
|
end
|