describe 'dossiers/show/header.html.haml', type: :view do
  let(:procedure) { create(:procedure, :discarded) }
  let(:dossier) { create(:dossier, state: "brouillon", procedure: procedure) }
  let(:user) { dossier.user }

  before do
    sign_in user
  end

  subject! { render 'shared/dossiers/header.html.haml', dossier: dossier }

  context "when the procedure is discarded with a dossier en brouillon" do
    it 'affiche que la démarche est supprimée' do
      expect(rendered).to have_text("La démarche liée à votre dossier est supprimée")
      expect(rendered).to have_text("Vous pouvez toujours consulter votre dossier, mais il ne sera pas traité par l'administration")
    end

    it 'cannot download the dossier' do
      expect(rendered).not_to have_text("Tout le dossier")
    end
  end

  context "when the procedure is closed with a dossier en brouillon" do
    let(:procedure) { create(:procedure, :closed) }

    it 'affiche que la démarche est close' do
      expect(rendered).to have_text("La démarche liée à votre dossier est close")
      expect(rendered).to have_text("Vous pouvez toujours consulter votre dossier, mais il ne sera pas traité par l'administration")
    end

    it 'cannot download the dossier' do
      expect(rendered).not_to have_text("Tout le dossier")
    end
  end

  context "when user is invited" do
    context "when the procedure is closed with a dossier en construction" do
      let(:procedure) { create(:procedure, :closed) }
      let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
      let(:user) { create(:user) }

      before do
        create(:invite, user: user, dossier: dossier)
      end

      it "n'affiche pas de banner" do
        expect(rendered).not_to have_text("La démarche liée à votre dossier est close")
      end

      it 'can not download the dossier' do
        expect(rendered).not_to have_text("Tout le dossier")
      end
    end
  end

  describe "identity edit" do
    context "when the identity is individual" do
      let(:procedure) { create(:procedure, for_individual: true) }
      let(:dossier) { create(:dossier, :with_individual, state: "brouillon", procedure: procedure) }

      it "display identity with an edit link" do
        expect(rendered).to have_text(/Nom\s+#{dossier.individual.nom}/)
        expect(rendered).to have_link("Modifier l’identité")
      end
    end

    context "when the identity is an enterprise" do
      let(:procedure) { create(:procedure, for_individual: false) }
      let(:dossier) { create(:dossier, :with_entreprise, state: "brouillon", procedure: procedure) }

      it "display short identity with an edit siret link" do
        expect(rendered).to have_text(/Dénomination :\s+#{dossier.etablissement.entreprise_raison_sociale}/)
        expect(rendered).not_to have_text("Numéro de TVA")
        expect(rendered).to have_link("Modifier le SIRET")
      end
    end
  end
end