cover feature with specs

This commit is contained in:
sebastiencarceles 2023-02-06 15:12:34 +01:00
parent 07b5a3b4b5
commit 8aa31522b6
4 changed files with 76 additions and 8 deletions

View file

@ -103,13 +103,28 @@ RSpec.describe PrefillDescription, type: :model do
end end
context 'when the type de champ can have multiple values' do context 'when the type de champ can have multiple values' do
let(:type_de_champ) { create(:type_de_champ_multiple_drop_down_list, procedure: procedure) } let(:type_de_champ) { TypesDeChamp::PrefillTypeDeChamp.build(create(:type_de_champ_epci, procedure: procedure)) }
let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }
before do
allow(Rails).to receive(:cache).and_return(memory_store)
Rails.cache.clear
VCR.insert_cassette('api_geo_departements')
VCR.insert_cassette('api_geo_epcis')
end
after do
VCR.eject_cassette('api_geo_departements')
VCR.eject_cassette('api_geo_epcis')
end
it 'builds the URL with array parameter' do it 'builds the URL with array parameter' do
expect(prefill_description.prefill_link).to eq( expect(prefill_description.prefill_link).to eq(
commencer_url( commencer_url(
path: procedure.path, path: procedure.path,
"champ_#{type_de_champ.to_typed_id}": TypesDeChamp::PrefillMultipleDropDownListTypeDeChamp.new(type_de_champ).example_value "champ_#{type_de_champ.to_typed_id}": type_de_champ.example_value
) )
) )
end end
@ -128,19 +143,34 @@ RSpec.describe PrefillDescription, type: :model do
TEXT TEXT
end end
before { prefill_description.update(selected_type_de_champ_ids: [type_de_champ.id]) } let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }
before do
allow(Rails).to receive(:cache).and_return(memory_store)
Rails.cache.clear
VCR.insert_cassette('api_geo_departements')
VCR.insert_cassette('api_geo_epcis')
prefill_description.update(selected_type_de_champ_ids: [type_de_champ.id])
end
after do
VCR.eject_cassette('api_geo_departements')
VCR.eject_cassette('api_geo_epcis')
end
it "builds the query to create a new prefilled dossier" do it "builds the query to create a new prefilled dossier" do
expect(prefill_description.prefill_query).to eq(expected_query) expect(prefill_description.prefill_query).to eq(expected_query)
end end
context 'when the type de champ can have multiple values' do context 'when the type de champ can have multiple values' do
let(:type_de_champ) { create(:type_de_champ_multiple_drop_down_list, procedure: procedure) } let(:type_de_champ) { TypesDeChamp::PrefillTypeDeChamp.build(create(:type_de_champ_epci, procedure: procedure)) }
let(:expected_query) do let(:expected_query) do
<<~TEXT <<~TEXT
curl --request POST '#{api_public_v1_dossiers_url(procedure)}' \\ curl --request POST '#{api_public_v1_dossiers_url(procedure)}' \\
--header 'Content-Type: application/json' \\ --header 'Content-Type: application/json' \\
--data '{"champ_#{type_de_champ.to_typed_id}": #{TypesDeChamp::PrefillMultipleDropDownListTypeDeChamp.new(type_de_champ).example_value}}' --data '{"champ_#{type_de_champ.to_typed_id}": #{type_de_champ.example_value}}'
TEXT TEXT
end end

View file

@ -19,5 +19,6 @@ shared_examples "the user has got a prefilled dossier, owned by themselves" do
expect(page).to have_field(type_de_champ_phone.libelle, with: phone_value) expect(page).to have_field(type_de_champ_phone.libelle, with: phone_value)
expect(page).to have_css('label', text: type_de_champ_phone.libelle) expect(page).to have_css('label', text: type_de_champ_phone.libelle)
expect(page).to have_field(type_de_champ_datetime.libelle, with: datetime_value) expect(page).to have_field(type_de_champ_datetime.libelle, with: datetime_value)
expect(page).to have_field(type_de_champ_epci.libelle, with: epci_value.last)
end end
end end

View file

@ -1,4 +1,6 @@
describe 'Prefilling a dossier (with a GET request):' do describe 'Prefilling a dossier (with a GET request):' do
let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }
let(:password) { 'my-s3cure-p4ssword' } let(:password) { 'my-s3cure-p4ssword' }
let(:procedure) { create(:procedure, :published, opendata: true) } let(:procedure) { create(:procedure, :published, opendata: true) }
@ -7,9 +9,24 @@ describe 'Prefilling a dossier (with a GET request):' do
let(:type_de_champ_text) { create(:type_de_champ_text, procedure: procedure) } let(:type_de_champ_text) { create(:type_de_champ_text, procedure: procedure) }
let(:type_de_champ_phone) { create(:type_de_champ_phone, procedure: procedure) } let(:type_de_champ_phone) { create(:type_de_champ_phone, procedure: procedure) }
let(:type_de_champ_datetime) { create(:type_de_champ_datetime, procedure: procedure) } let(:type_de_champ_datetime) { create(:type_de_champ_datetime, procedure: procedure) }
let(:type_de_champ_epci) { create(:type_de_champ_epci, procedure: procedure) }
let(:text_value) { "My Neighbor Totoro is the best movie ever" } let(:text_value) { "My Neighbor Totoro is the best movie ever" }
let(:phone_value) { "invalid phone value" } let(:phone_value) { "invalid phone value" }
let(:datetime_value) { "2023-02-01T10:32" } let(:datetime_value) { "2023-02-01T10:32" }
let(:epci_value) { ['01', '200029999'] }
before do
allow(Rails).to receive(:cache).and_return(memory_store)
Rails.cache.clear
VCR.insert_cassette('api_geo_departements')
VCR.insert_cassette('api_geo_epcis')
end
after do
VCR.eject_cassette('api_geo_departements')
VCR.eject_cassette('api_geo_epcis')
end
context 'when authenticated' do context 'when authenticated' do
it_behaves_like "the user has got a prefilled dossier, owned by themselves" do it_behaves_like "the user has got a prefilled dossier, owned by themselves" do
@ -23,7 +40,8 @@ describe 'Prefilling a dossier (with a GET request):' do
path: procedure.path, path: procedure.path,
"champ_#{type_de_champ_text.to_typed_id}" => text_value, "champ_#{type_de_champ_text.to_typed_id}" => text_value,
"champ_#{type_de_champ_phone.to_typed_id}" => phone_value, "champ_#{type_de_champ_phone.to_typed_id}" => phone_value,
"champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value "champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value,
"champ_#{type_de_champ_epci.to_typed_id}" => epci_value
) )
click_on "Poursuivre mon dossier prérempli" click_on "Poursuivre mon dossier prérempli"
@ -37,7 +55,8 @@ describe 'Prefilling a dossier (with a GET request):' do
path: procedure.path, path: procedure.path,
"champ_#{type_de_champ_text.to_typed_id}" => text_value, "champ_#{type_de_champ_text.to_typed_id}" => text_value,
"champ_#{type_de_champ_phone.to_typed_id}" => phone_value, "champ_#{type_de_champ_phone.to_typed_id}" => phone_value,
"champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value "champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value,
"champ_#{type_de_champ_epci.to_typed_id}" => epci_value
) )
end end

View file

@ -1,4 +1,6 @@
describe 'Prefilling a dossier (with a POST request):' do describe 'Prefilling a dossier (with a POST request):' do
let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }
let(:password) { 'my-s3cure-p4ssword' } let(:password) { 'my-s3cure-p4ssword' }
let(:procedure) { create(:procedure, :published) } let(:procedure) { create(:procedure, :published) }
@ -7,9 +9,24 @@ describe 'Prefilling a dossier (with a POST request):' do
let(:type_de_champ_text) { create(:type_de_champ_text, procedure: procedure) } let(:type_de_champ_text) { create(:type_de_champ_text, procedure: procedure) }
let(:type_de_champ_phone) { create(:type_de_champ_phone, procedure: procedure) } let(:type_de_champ_phone) { create(:type_de_champ_phone, procedure: procedure) }
let(:type_de_champ_datetime) { create(:type_de_champ_datetime, procedure: procedure) } let(:type_de_champ_datetime) { create(:type_de_champ_datetime, procedure: procedure) }
let(:type_de_champ_epci) { create(:type_de_champ_epci, procedure: procedure) }
let(:text_value) { "My Neighbor Totoro is the best movie ever" } let(:text_value) { "My Neighbor Totoro is the best movie ever" }
let(:phone_value) { "invalid phone value" } let(:phone_value) { "invalid phone value" }
let(:datetime_value) { "2023-02-01T10:32" } let(:datetime_value) { "2023-02-01T10:32" }
let(:epci_value) { ['01', '200029999'] }
before do
allow(Rails).to receive(:cache).and_return(memory_store)
Rails.cache.clear
VCR.insert_cassette('api_geo_departements')
VCR.insert_cassette('api_geo_epcis')
end
after do
VCR.eject_cassette('api_geo_departements')
VCR.eject_cassette('api_geo_epcis')
end
scenario "the user get the URL of a prefilled orphan brouillon dossier" do scenario "the user get the URL of a prefilled orphan brouillon dossier" do
dossier_url = create_and_prefill_dossier_with_post_request dossier_url = create_and_prefill_dossier_with_post_request
@ -98,7 +115,8 @@ describe 'Prefilling a dossier (with a POST request):' do
params: { params: {
"champ_#{type_de_champ_text.to_typed_id}" => text_value, "champ_#{type_de_champ_text.to_typed_id}" => text_value,
"champ_#{type_de_champ_phone.to_typed_id}" => phone_value, "champ_#{type_de_champ_phone.to_typed_id}" => phone_value,
"champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value "champ_#{type_de_champ_datetime.to_typed_id}" => datetime_value,
"champ_#{type_de_champ_epci.to_typed_id}" => epci_value
}.to_json }.to_json
JSON.parse(session.response.body)["dossier_url"].gsub("http://www.example.com", "") JSON.parse(session.response.body)["dossier_url"].gsub("http://www.example.com", "")
end end