Controller use new export model
This commit is contained in:
parent
745086cbb5
commit
60538c9c28
3 changed files with 94 additions and 13 deletions
|
@ -431,4 +431,80 @@ describe Instructeurs::ProceduresController, type: :controller do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#download_export' do
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
let!(:procedure) { create(:procedure) }
|
||||
let!(:gi_0) { procedure.defaut_groupe_instructeur }
|
||||
let!(:gi_1) { GroupeInstructeur.create(label: 'gi_1', procedure: procedure, instructeurs: [instructeur]) }
|
||||
|
||||
before { sign_in(instructeur.user) }
|
||||
|
||||
subject do
|
||||
get :download_export, params: { export_format: :csv, procedure_id: procedure.id }
|
||||
end
|
||||
|
||||
context 'when the export is does not exist' do
|
||||
it 'displays an notice' do
|
||||
is_expected.to redirect_to(instructeur_procedure_url(procedure))
|
||||
expect(flash.notice).to be_present
|
||||
end
|
||||
|
||||
it { expect { subject }.to change(Export, :count).by(1) }
|
||||
end
|
||||
|
||||
context 'when the export is not ready' do
|
||||
before do
|
||||
Export.create(format: :csv, groupe_instructeurs: [gi_1])
|
||||
end
|
||||
|
||||
it 'displays an notice' do
|
||||
is_expected.to redirect_to(instructeur_procedure_url(procedure))
|
||||
expect(flash.notice).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the export is ready' do
|
||||
let!(:export) do
|
||||
Export.create(format: :csv, groupe_instructeurs: [gi_1])
|
||||
end
|
||||
|
||||
before do
|
||||
export.file.attach(io: StringIO.new('export'), filename: 'file.csv')
|
||||
end
|
||||
|
||||
it 'displays the download link' do
|
||||
subject
|
||||
expect(response.headers['Location']).to start_with("http://test.host/rails/active_storage/disk")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when another export is ready' do
|
||||
let!(:export) do
|
||||
Export.create(format: :csv, groupe_instructeurs: [gi_0, gi_1])
|
||||
end
|
||||
|
||||
before do
|
||||
export.file.attach(io: StringIO.new('export'), filename: 'file.csv')
|
||||
end
|
||||
|
||||
it 'displays an notice' do
|
||||
is_expected.to redirect_to(instructeur_procedure_url(procedure))
|
||||
expect(flash.notice).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the js format is used' do
|
||||
before do
|
||||
post :download_export,
|
||||
params: { export_format: :csv, procedure_id: procedure.id },
|
||||
format: :js
|
||||
end
|
||||
|
||||
it "responses in the correct format" do
|
||||
expect(response.content_type).to eq "text/javascript"
|
||||
expect(response).to have_http_status(:ok)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue