demarches-normaliennes/spec/controllers/new_user/dossiers_controller_spec.rb
2018-01-18 10:53:34 +01:00

67 lines
2 KiB
Ruby

require 'spec_helper'
describe NewUser::DossiersController, type: :controller do
let(:user) { create(:user) }
describe 'before_action: ensure_ownership!' do
it 'is present' do
before_actions = NewUser::DossiersController
._process_action_callbacks
.find_all{ |process_action_callbacks| process_action_callbacks.kind == :before }
.map(&:filter)
expect(before_actions).to include(:ensure_ownership!)
end
end
describe 'ensure_ownership!' do
let(:user) { create(:user) }
before do
@controller.params[:dossier_id] = asked_dossier.id
expect(@controller).to receive(:current_user).and_return(user)
allow(@controller).to receive(:redirect_to)
@controller.send(:ensure_ownership!)
end
context 'when a user asks for its dossier' do
let(:asked_dossier) { create(:dossier, user: user) }
it 'does not redirects nor flash' do
expect(@controller).not_to have_received(:redirect_to)
expect(flash.alert).to eq(nil)
end
end
context 'when a user asks for another dossier' do
let(:asked_dossier) { create(:dossier) }
it 'redirects and flash' do
expect(@controller).to have_received(:redirect_to).with(root_path)
expect(flash.alert).to eq("Vous n'avez pas accès à ce dossier")
end
end
end
describe 'attestation' do
before { sign_in(user) }
context 'when a dossier has an attestation' do
let(:fake_pdf) { double(read: 'pdf content') }
let!(:dossier) { create(:dossier, attestation: Attestation.new, user: user) }
it 'returns the attestation pdf' do
allow_any_instance_of(Attestation).to receive(:pdf).and_return(fake_pdf)
expect(controller).to receive(:send_data)
.with('pdf content', filename: 'attestation.pdf', type: 'application/pdf') do
controller.render nothing: true
end
get :attestation, params: { dossier_id: dossier.id }
expect(response).to have_http_status(:success)
end
end
end
end