require 'spec_helper' describe Sessions::SessionsController, type: :controller do controller Sessions::SessionsController do def create render json: '' end end let(:user) { create(:user) } let(:gestionnaire) { create(:gestionnaire) } let(:administrateur) { create(:administrateur) } describe '.create' do before do @request.env["devise.mapping"] = Devise.mappings[:user] end it 'calls before_sign_in' do expect_any_instance_of(Sessions::SessionsController).to receive(:before_sign_in) post :create end end describe '.create with user connected' do before do @request.env["devise.mapping"] = Devise.mappings[:user] allow_any_instance_of(described_class).to receive(:user_signed_in?).and_return(true) end it 'calls sign out for user' do expect_any_instance_of(described_class).to receive(:sign_out).with(:user) post :create end end describe '.create with gestionnaire connected' do before do @request.env["devise.mapping"] = Devise.mappings[:gestionnaire] allow_any_instance_of(described_class).to receive(:gestionnaire_signed_in?).and_return(true) end it 'calls sign out for gestionnaire' do expect_any_instance_of(described_class).to receive(:sign_out).with(:gestionnaire) post :create end end describe '.create with administrateur connected' do before do @request.env["devise.mapping"] = Devise.mappings[:administrateur] allow_any_instance_of(described_class).to receive(:administrateur_signed_in?).and_return(true) end it 'calls sign out for administrateur' do expect_any_instance_of(described_class).to receive(:sign_out).with(:administrateur) post :create end end end