require 'spec_helper'

describe 'admin/accompagnateurs/show.html.haml', type: :view do
  let(:admin) { create(:administrateur) }
  let(:procedure) { create :procedure, administrateur: admin }

  let(:assign_gestionnaires) { procedure.gestionnaires }
  let(:not_assign_gestionnaires) { admin.gestionnaires.where.not(id: assign_gestionnaires.ids) }

  before do
    assign(:procedure, procedure)
    assign(:gestionnaire, Gestionnaire.new)

    assign(:accompagnateurs_assign, (smart_listing_create :accompagnateurs_assign,
                                                          assign_gestionnaires,
                                                          partial: "admin/accompagnateurs/list_assign",
                                                          array: true))

    assign(:accompagnateurs_not_assign, (smart_listing_create :accompagnateurs_not_assign,
                                                              not_assign_gestionnaires,
                                                              partial: "admin/accompagnateurs/list_not_assign",
                                                              array: true))
  end

  context 'when admin have none accompagnateur ' do
    before do
      render
    end

    it { expect(rendered).to have_content('Aucun de disponible') }

    context 'when administrateur have none accompagnateur assign' do
      it { expect(rendered).to have_content('Aucun d\'affecté') }
    end
  end

  context 'when administrateur have two accompagnateur' do
    let!(:accompagnateur_1) { create :gestionnaire, email: 'plop@plop.com', administrateurs: [admin] }
    let!(:accompagnateur_2) { create :gestionnaire, email: 'plip@plop.com', administrateurs: [admin] }

    before do
      not_assign_gestionnaires.reload
      assign_gestionnaires.reload

      assign(:accompagnateurs_assign, (smart_listing_create :accompagnateurs_assign,
                                                            assign_gestionnaires,
                                                            partial: "admin/accompagnateurs/list_assign",
                                                            array: true))

      assign(:accompagnateurs_not_assign, (smart_listing_create :accompagnateurs_not_assign,
                                                                not_assign_gestionnaires,
                                                                partial: "admin/accompagnateurs/list_not_assign",
                                                                array: true))

      render
    end

    it { expect(rendered).to have_content(accompagnateur_1.email) }
    it { expect(rendered).to have_content(accompagnateur_2.email) }
  end
end