78 lines
2.6 KiB
Ruby
78 lines
2.6 KiB
Ruby
|
RSpec.describe API::Public::V1::StatsController, type: :controller do
|
||
|
describe '#index' do
|
||
|
let(:params) { { id: procedure.id } }
|
||
|
subject(:index_request) { get :index, params: params }
|
||
|
|
||
|
shared_examples 'the procedure is found' do
|
||
|
before do
|
||
|
create(:dossier, :en_instruction, procedure: procedure)
|
||
|
create(:dossier, :accepte, procedure: procedure)
|
||
|
|
||
|
index_request
|
||
|
end
|
||
|
|
||
|
it { expect(response).to be_successful }
|
||
|
|
||
|
it {
|
||
|
expect(JSON.parse(response.body)).to match({
|
||
|
funnel: procedure.stats_dossiers_funnel.as_json,
|
||
|
processed: procedure.stats_termines_states.as_json,
|
||
|
processed_by_week: procedure.stats_termines_by_week.as_json,
|
||
|
processing_time: procedure.stats_usual_traitement_time.as_json,
|
||
|
processing_time_by_month: procedure.stats_usual_traitement_time_by_month_in_days.as_json
|
||
|
}.with_indifferent_access)
|
||
|
}
|
||
|
end
|
||
|
|
||
|
shared_examples 'the procedure is not found' do
|
||
|
before { index_request }
|
||
|
|
||
|
it { expect(response).to have_http_status(:not_found) }
|
||
|
|
||
|
it { expect(response).to have_failed_with("procedure #{procedure.id} is not found") }
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is found' do
|
||
|
context 'when the procedure is publiee' do
|
||
|
context 'when the procedure is opendata' do
|
||
|
it_behaves_like 'the procedure is found' do
|
||
|
let(:procedure) { create(:procedure, :published, opendata: true) }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is not opendata' do
|
||
|
it_behaves_like 'the procedure is not found' do
|
||
|
let(:procedure) { create(:procedure, :published, opendata: false) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is brouillon' do
|
||
|
context 'when the procedure is opendata' do
|
||
|
it_behaves_like 'the procedure is found' do
|
||
|
let(:procedure) { create(:procedure, :draft, opendata: true) }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is not opendata' do
|
||
|
it_behaves_like 'the procedure is not found' do
|
||
|
let(:procedure) { create(:procedure, :draft, opendata: false) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is not publiee and not brouillon' do
|
||
|
it_behaves_like 'the procedure is not found' do
|
||
|
let(:procedure) { create(:procedure, :closed) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when the procedure is not found' do
|
||
|
it_behaves_like 'the procedure is not found' do
|
||
|
let(:procedure) { double(Procedure, id: -1) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|