demarches-normaliennes/spec/lib/recovery/life_cycle_spec.rb
2023-05-16 14:49:36 +02:00

108 lines
4 KiB
Ruby

describe Recovery::LifeCycle do
describe '.load_export_destroy_and_import' do
let(:procedure) do
create(:procedure,
types_de_champ_public: [
{ type: :repetition, children: [{ type: :piece_justificative }] },
{ type: :carte },
{ type: :siret }
])
end
let(:some_file) { Rack::Test::UploadedFile.new('spec/fixtures/files/white.png', 'image/png') }
let(:geo_area) { build(:geo_area, :selection_utilisateur, :polygon) }
let(:dossier) do
d = create(:dossier, procedure:)
repetition(d).add_row(d.revision)
pj_champ(d).piece_justificative_file.attach(some_file)
carte(d).update(geo_areas: [geo_area])
d.etablissement = create(:etablissement, :with_exercices)
d.etablissement.entreprise_attestation_sociale.attach(some_file)
d.etablissement.entreprise_attestation_fiscale.attach(some_file)
siret(d).update(etablissement: create(:etablissement, :with_exercices))
siret(d).etablissement.entreprise_attestation_sociale.attach(some_file)
siret(d).etablissement.entreprise_attestation_fiscale.attach(some_file)
d.individual = build(:individual)
d.attestation = build(:attestation, :with_pdf)
d.justificatif_motivation.attach(some_file)
d.commentaires << build(:commentaire, :with_file)
d.invites << build(:invite, :with_user)
d.avis << build(:avis, :with_introduction, :with_piece_justificative)
d.traitements.accepter(motivation: 'oui', processed_at: Time.zone.now)
d.save
d.dossier_operation_logs << build(:dossier_operation_log, :with_serialized)
d.transfer_logs.create(from: create(:user), to: create(:user))
d
end
def repetition(d) = d.champs.find_by(type: "Champs::RepetitionChamp")
def pj_champ(d) = d.champs.find_by(type: "Champs::PieceJustificativeChamp")
def carte(d) = d.champs.find_by(type: "Champs::CarteChamp")
def siret(d) = d.champs.find_by(type: "Champs::SiretChamp")
let(:instructeur) { create(:instructeur) }
before do
instructeur.followed_dossiers << dossier
end
it 'reloads the full grappe' do
expect(Dossier.count).to eq(1)
expect(Dossier.first.champs.count).not_to be(0)
Recovery::LifeCycle.new(dossier_ids: [dossier.id]).load_export_destroy_and_import
expect(Dossier.count).to eq(1)
reloaded_dossier = Dossier.first
expect(reloaded_dossier.champs.count).not_to be(0)
expect(repetition(reloaded_dossier).champs.map(&:type)).to match_array(["Champs::PieceJustificativeChamp"])
expect(pj_champ(reloaded_dossier).piece_justificative_file).to be_attached
expect(carte(reloaded_dossier).geo_areas).to be_present
expect(reloaded_dossier.etablissement.exercices).to be_present
# launch a job
# expect(reloaded_dossier.etablissement.entreprise_attestation_sociale).to be_attached
# expect(reloaded_dossier.etablissement.entreprise_attestation_fiscale).to be_attached
expect(siret(reloaded_dossier).etablissement.exercices).to be_present
# launch a job
# expect(siret(reloaded_dossier).etablissement.entreprise_attestation_sociale).to be_attached
# expect(siret(reloaded_dossier).etablissement.entreprise_attestation_fiscale).to be_attached
expect(reloaded_dossier.individual).to be_present
expect(reloaded_dossier.attestation.pdf).to be_attached
expect(reloaded_dossier.justificatif_motivation).to be_attached
expect(reloaded_dossier.commentaires.first.piece_jointe).to be_attached
expect(reloaded_dossier.invites.first.user).to be_present
expect(reloaded_dossier.followers_instructeurs).to match_array([instructeur])
expect(reloaded_dossier.avis.first.introduction_file).to be_attached
expect(reloaded_dossier.avis.first.piece_justificative_file).to be_attached
expect(reloaded_dossier.traitements).to be_present
expect(reloaded_dossier.dossier_operation_logs.first.serialized).to be_attached
expect(reloaded_dossier.transfer_logs).to be_present
end
end
end