require 'spec_helper'

describe DossierTableExportSerializer do
  describe '#attributes' do
    subject { DossierTableExportSerializer.new(dossier).serializable_hash }

    context 'when the dossier is en_construction' do
      let(:dossier) { create(:dossier, :en_construction) }

      it { is_expected.to include(initiated_at: dossier.en_construction_at) }
      it { is_expected.to include(state: 'initiated') }
    end

    context 'when the dossier is en instruction' do
      let(:dossier) { create(:dossier, :en_instruction) }

      it { is_expected.to include(received_at: dossier.en_instruction_at) }
      it { is_expected.to include(state: 'received') }
    end

    context 'when the dossier is accepte' do
      let(:dossier) { create(:dossier, state: Dossier.states.fetch(:accepte)) }

      it { is_expected.to include(state: 'closed') }
    end

    context 'when the dossier is refuse' do
      let(:dossier) { create(:dossier, state: Dossier.states.fetch(:refuse)) }

      it { is_expected.to include(state: 'refused') }
    end

    context 'when the dossier is sans_suite' do
      let(:dossier) { create(:dossier, state: Dossier.states.fetch(:sans_suite)) }

      it { is_expected.to include(state: 'without_continuation') }
    end
  end

  describe '#emails_instructeurs' do
    let(:gestionnaire){ create(:gestionnaire) }
    let(:gestionnaire2) { create :gestionnaire }
    let(:dossier) { create(:dossier) }

    subject { DossierTableExportSerializer.new(dossier).emails_instructeurs }

    context 'when there is no instructeurs' do
      it { is_expected.to eq('') }
    end

    context 'when there one instructeur' do
      before { gestionnaire.followed_dossiers << dossier }

      it { is_expected.to eq(gestionnaire.email) }
    end

    context 'when there is 2 followers' do
      before do
        gestionnaire.followed_dossiers << dossier
        gestionnaire2.followed_dossiers << dossier
      end

      it { is_expected.to eq "#{gestionnaire.email} #{gestionnaire2.email}" }
    end
  end
end
