require 'spec_helper'

describe Admin::MailTemplatesController, type: :controller do
  let(:procedure) { create :procedure }
  let(:initiated_mail) { Mails::InitiatedMail.default_for_procedure(procedure) }

  before do
    sign_in(procedure.administrateurs.first.user)
  end

  describe 'GET index' do
    render_views

    subject { get :index, params: { procedure_id: procedure.id } }

    it { expect(subject.status).to eq 200 }
    it { expect(subject.body).to include("E-mails personnalisables") }
    it { expect(subject.body).to include(Mails::InitiatedMail::DISPLAYED_NAME) }
  end

  describe 'PATCH update' do
    let(:mail_subject) { 'plop modif' }
    let(:mail_body) { 'plip modif' }

    before :each do
      patch :update,
        params: {
          procedure_id: procedure.id,
          id: initiated_mail.class.const_get(:SLUG),
          mail_template: { subject: mail_subject, body: mail_body }
        }
    end

    it { expect(response).to redirect_to edit_admin_procedure_mail_template_path(procedure, initiated_mail.class.const_get(:SLUG)) }

    context 'the mail template' do
      subject { procedure.reload; procedure.initiated_mail_template }

      it { expect(subject.subject).to eq(mail_subject) }
      it { expect(subject.body).to eq(mail_body) }
    end
  end
end