describe ProcedureSerializer do describe '#attributes' do subject { ProcedureSerializer.new(procedure).serializable_hash } let(:procedure) { create(:procedure, :published) } it { is_expected.to include(link: "http://localhost:3000/commencer/#{procedure.path}") is_expected.to include(state: "publiee") } end context 'when a type PJ was cloned to a type champ PJ' do let(:original_procedure) do p = create(:procedure, :published) p.types_de_piece_justificative.create( libelle: "Vidéo de votre demande de subvention", description: "Pour optimiser vos chances, soignez la chorégraphie et privilégiez le chant polyphonique", lien_demarche: "https://www.dance-academy.gouv.fr", order_place: 0 ) p end let(:procedure) { original_procedure.clone(original_procedure.administrateurs.first, false) } let(:type_pj) { original_procedure.types_de_piece_justificative.first } let(:migrated_type_champ) { procedure.types_de_champ.find_by(libelle: type_pj.libelle) } subject { ProcedureSerializer.new(procedure).serializable_hash } it "is exposed as a legacy type PJ" do is_expected.to include( types_de_piece_justificative: [ { "id" => type_pj.id, "libelle" => type_pj.libelle, "description" => type_pj.description, "lien_demarche" => type_pj.lien_demarche, "order_place" => type_pj.order_place } ] ) end it "is not exposed as a type de champ" do expect(subject[:types_de_champ]).not_to include(a_hash_including(libelle: type_pj.libelle)) end end end