demarches-normaliennes/spec/controllers/administrateurs/sources_particulier_controller_spec.rb
2021-11-30 08:49:38 +01:00

60 lines
2.1 KiB
Ruby

describe Administrateurs::SourcesParticulierController, type: :controller do
let(:admin) { create(:administrateur) }
before { sign_in(admin.user) }
describe "#show" do
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: { cnaf: { enfants: ['nomPrenom'] } }) }
render_views
subject { get :show, params: { procedure_id: procedure.id } }
it 'renders the sources form' do
expect(subject.body).to include(I18n.t('api_particulier.providers.cnaf.scopes.enfants.dateDeNaissance'))
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=nomPrenom][checked=checked]")
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=dateDeNaissance]")
expect(subject.body).not_to have_selector("input#api_particulier_sources_cnaf_enfants_[value=dateDeNaissance][checked=checked]")
end
end
describe "#update" do
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: {}) }
let(:params) { { procedure_id: procedure.id }.merge(requested_sources) }
before do
patch :update, params: params
procedure.reload
end
context 'when no source is requested' do
let(:requested_sources) { {} }
it { expect(procedure.api_particulier_sources).to be_empty }
end
context 'when a forbidden source is requested' do
let(:requested_sources) do
{
api_particulier_sources: { cnaf: { enfants: ['forbidden'] } }
}
end
it { expect(procedure.api_particulier_sources).to be_empty }
end
context 'when an authorized source is requested' do
let(:requested_sources) do
{
api_particulier_sources: { cnaf: { enfants: ['nomPrenom'] } }
}
end
it 'saves the source' do
expect(procedure.api_particulier_sources).to eq("cnaf" => { "enfants" => ["nomPrenom"] })
expect(flash.notice).to eq(I18n.t(".administrateurs.sources_particulier.update.sources_ok"))
end
end
end
end