include ActionView::Helpers::SanitizeHelper describe Manager::DossiersController, type: :controller do let(:super_admin) { create(:super_admin) } before do sign_in super_admin procedure = create(:procedure, :published, types_de_champ_public: types_de_champ) @dossier = create(:dossier, :en_construction, :with_populated_champs, procedure:) end let(:types_de_champ) { [] } render_views describe 'GET #index' do it "should list dossiers" do get :index expect(response.body).to include(@dossier.procedure.libelle) end end describe "GET #show" do let(:types_de_champ) { [ { libelle: "Nom", mandatory: true } ] } before do get :show, params: { id: @dossier.id } end subject { strip_tags(response.body) } it { expect(subject).to match(%r{Nom\s+\*\s+Texte court\s+🟢\s+rempli}) } end describe "POST #transfer" do subject do post :transfer, params: { id: @dossier.id, email: } end context 'with valid email' do let(:email) { "chouette.gars@laposte.net" } it do expect { subject }.to have_enqueued_mail(DossierMailer, :notify_transfer) expect(flash[:success]).to eq("Une invitation de transfert a été envoyée à chouette.gars@laposte.net") end end context 'with invalid email' do let(:email) { "chouette" } it do expect { subject }.not_to have_enqueued_mail expect(flash[:alert]).to eq("L’adresse email est invalide. Saisir une adresse électronique valide, exemple : john.doe@exemple.fr") end end end describe "DELETE #transfer_destroy" do before do DossierTransfer.create(email: 'coucou@laposte.net', dossiers: [@dossier]) delete :transfer_destroy, params: { id: @dossier.id } end it { expect(@dossier.transfer).to be_nil } it { expect(flash[:notice]).to eq "La demande de transfert a été supprimée avec succès" } end end