Skip to content

Commit

Permalink
Merge pull request #645 from etalab/fix/formulaires_dgfip_preremplis
Browse files Browse the repository at this point in the history
Fix/formulaires dgfip preremplis
  • Loading branch information
Samuelfaure authored Jan 8, 2025
2 parents 849f8d9 + 88cf923 commit a72712d
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 35 deletions.
12 changes: 6 additions & 6 deletions config/authorization_request_forms/api_impot_particulier.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ api-impot-particulier-stationnement-residentiel-sandbox:
description: Dites-le nous une fois - Stationnement Résidentiel (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-stationnement-residentiel-production:
name: Stationnement résidentiel
Expand Down Expand Up @@ -134,7 +134,7 @@ api-impot-particulier-place-creche-sandbox:
description: Dites-le nous une fois - Place en crèche (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-place-creche-production:
name: Place en crèche
Expand Down Expand Up @@ -165,7 +165,7 @@ api-impot-particulier-activites-periscolaires-sandbox:
description: Dites-le nous une fois - Activités périscolaires (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-activites-periscolaires-production:
name: Activités périscolaires
Expand Down Expand Up @@ -195,7 +195,7 @@ api-impot-particulier-cantine-scolaire-sandbox:
description: Dites-le nous une fois - Cantine scolaire (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-cantine-scolaire-production:
name: Cantine scolaire
Expand Down Expand Up @@ -225,7 +225,7 @@ api-impot-particulier-aides-sociales-facultatives-sandbox:
description: Dites-le nous une fois - Aides sociales facultatives (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-aides-sociales-facultatives-production:
name: Aides sociales facultatives
Expand Down Expand Up @@ -255,7 +255,7 @@ api-impot-particulier-carte-transport-sandbox:
description: Dites-le nous une fois - Carte de transport (Bac à sable)
introduction: TODO
authorization_request: APIImpotParticulierSandbox
steps: &api_impot_particulier_sandbox_steps
steps: *api_impot_particulier_sandbox_steps

api-impot-particulier-carte-transport-production:
name: Carte de transport
Expand Down
2 changes: 1 addition & 1 deletion features/habilitation_en_plusieurs_paliers.feature
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Fonctionnalité: Interactions avec des habilitations en plusieurs paliers (bac
Alors il n'y a pas de bouton "Démarrer ma demande d’habilitation en production"

Scénario: Il y a un badge sandbox lors du démarrage d'une habilitation de bac à sable
Quand je veux remplir une demande pour API Impot Particulier via le formulaire "Demande libre (Bac à sable)" en bac à sable
Quand je veux remplir une demande pour "API Impôt Particulier" via le formulaire "Demande libre (Bac à sable)" à l'étape "Bac à sable"
Et que je clique sur "Débuter ma demande"
Alors il y a un badge "Bac à sable"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier
Contexte:
Sachant que je suis un demandeur
Et que je me connecte
Et que j'ai 1 demande d'habilitation "API Impôt Particulier" à l'étape "Bac à sable" validée
Et que j'ai 1 demande d'habilitation "API Impôt Particulier" via le formulaire "<Nom du formulaire>" à l'étape "Bac à sable" validée
Et que je me rends sur mon tableau de bord

Scénario: Je soumets une demande d'habilitation valide
Plan du scénario: Je soumets une demande d'habilitation valide
Quand je clique sur "Démarrer ma demande d’habilitation en production"
Et que je clique sur "Débuter ma demande"

Expand All @@ -25,3 +25,14 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier

Alors il y a un message de succès contenant "soumise avec succès"
Et je suis sur la page "Demandes et habilitations"

Exemples:
| Nom du formulaire |

| Demande libre (Bac à sable) |
| Stationnement résidentiel (Bac à sable) |
| Place en crèche (Bac à sable) |
| Activités périscolaires (Bac à sable) |
| Cantine scolaire (Bac à sable) |
| Aides sociales facultatives (Bac à sable) |
| Carte de transport (Bac à sable) |
16 changes: 14 additions & 2 deletions features/habilitations/dgfip/api_impot_particulier/sandbox.feature
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier
Sachant que je suis un demandeur
Et que je me connecte

Scénario: Je soumets une demande d'habilitation valide
Quand je veux remplir une demande pour API Impot Particulier via le formulaire "Demande libre (Bac à sable)" en bac à sable
Plan du scénario: Je soumets une demande d'habilitation valide
Quand je veux remplir une demande pour "API Impôt Particulier" via le formulaire "<Nom du formulaire>" à l'étape "Bac à sable"

* je clique sur "Débuter ma demande"
* je renseigne les infos de bases du projet
* je clique sur "Suivant"
Expand All @@ -32,3 +33,14 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier

Alors il y a un message de succès contenant "soumise avec succès"
Et je suis sur la page "Demandes et habilitations"

Exemples:
| Nom du formulaire |

| Demande libre (Bac à sable) |
| Stationnement résidentiel (Bac à sable) |
| Place en crèche (Bac à sable) |
| Activités périscolaires (Bac à sable) |
| Cantine scolaire (Bac à sable) |
| Aides sociales facultatives (Bac à sable) |
| Carte de transport (Bac à sable) |
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôts Particulier
Sachant que je suis un demandeur
Et que je me connecte

Quand je veux remplir une demande pour API Impot Particulier via le formulaire "Demande libre (Bac à sable)" en bac à sable
Quand je veux remplir une demande pour "API Impôt Particulier" via le formulaire "Demande libre (Bac à sable)" à l'étape "Bac à sable"
* je clique sur "Débuter ma demande"
* je renseigne les infos de bases du projet
* je clique sur "Suivant"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôts Particulier
Contexte:
Sachant que je suis un demandeur
Et que je me connecte
Quand je veux remplir une demande pour API Impot Particulier via le formulaire "Demande libre (Bac à sable)" en bac à sable
Quand je veux remplir une demande pour "API Impôt Particulier" via le formulaire "Demande libre (Bac à sable)" à l'étape "Bac à sable"
* je clique sur "Débuter ma demande"
* je renseigne les infos de bases du projet
* je clique sur "Suivant"
Expand Down
10 changes: 0 additions & 10 deletions features/step_definitions/api_impot_particulier_steps.rb

This file was deleted.

23 changes: 17 additions & 6 deletions features/step_definitions/authorization_requests_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,17 @@
visit new_authorization_request_form_path(form_uid: authorization_request_forms.first.uid)
end

Quand('je veux remplir une demande pour {string} via le formulaire {string} à l\'étape {string}') do |authorization_request_name, authorization_request_form_name, stage|
authorization_request_forms = AuthorizationRequestForm.where(
name: authorization_request_form_name,
authorization_request_class: find_authorization_request_class_from_name(authorization_request_name, extract_stage_type(stage)),
)

raise "More than one form found for #{authorization_request_name} and #{authorization_request_form_name}" if authorization_request_forms.count > 1

visit new_authorization_request_form_path(form_uid: authorization_request_forms.first.uid)
end

Quand('je veux remplir une demande pour {string} via le formulaire {string} de l\'éditeur {string}') do |authorization_request_name, authorization_request_form_name, service_provider_name|
authorization_request_forms = AuthorizationRequestForm.where(
name: authorization_request_form_name,
Expand Down Expand Up @@ -149,16 +160,16 @@
visit authorization_request_path(authorization_request)
end

# https://rubular.com/r/WVasHhgcHlZSir
Quand(/(j'ai|il y a|mon organisation a) (\d+) demandes? d'habilitation "([^"]+)" ?(?:à l'étape "([^"]+)")? ?(?:en )?(.+)?/) do |who, count, type, stage, status|
# https://rubular.com/r/UD2mV5frl1q1oX
Quand(/(j'ai|il y a|mon organisation a) (\d+) demandes? d'habilitation "([^"]+)" ?(?:via le formulaire "([^"]+)")? ?(?:à l'étape "([^"]+)")? ?(?:en )?(.+)?/) do |who, count, type, form, stage, status| # rubocop:disable Metrics/ParameterLists
applicant = case who
when 'j\'ai'
current_user
when 'mon organisation a'
create(:user, current_organization: current_user.current_organization)
end

create_authorization_requests_with_status(type, status, count, stage, applicant:)
create_authorization_requests_with_status(type, status, count, stage, form, applicant:)
end

Quand("cette dernière demande d'habilitation s'appelait {string}") do |intitule|
Expand All @@ -176,7 +187,7 @@
organization: foreign_user.current_organization,
}

create_authorization_requests_with_status(type, 'soumise', count, nil, options)
create_authorization_requests_with_status(type, 'soumise', count, nil, nil, options)
end

# https://rubular.com/r/dRUFmK5dzDpjJv
Expand Down Expand Up @@ -376,12 +387,12 @@
attributes[:organization] = find_or_create_organization_by_name(organization_name) if organization_name.present?

if current_user.instructor?
authorization_request = create_authorization_requests_with_status(type, status, 1, nil, attributes).first
authorization_request = create_authorization_requests_with_status(type, status, 1, nil, nil, attributes).first

visit instruction_authorization_request_path(authorization_request)
else
attributes[:applicant] = current_user if attributes[:organization].blank?
authorization_request = create_authorization_requests_with_status(type, status, 1, nil, attributes).first
authorization_request = create_authorization_requests_with_status(type, status, 1, nil, nil, attributes).first

visit authorization_request_path(authorization_request)
end
Expand Down
17 changes: 11 additions & 6 deletions features/support/authorization_request_helpers.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
def find_authorization_request_class_from_name(name)
authorization_definition = find_authorization_definition_from_name(name)
def find_authorization_request_class_from_name(name, stage_type = nil)
authorization_definition = find_authorization_definition_from_name(name, stage_type)

AuthorizationRequest.const_get(authorization_definition.id.classify)
end
Expand All @@ -18,9 +18,14 @@ def find_authorization_request_form_from_name(name)
AuthorizationRequestForm.where(name:).first
end

def find_factory_trait_from_name(name, stage = nil)
def find_factory_trait_from_name(name, stage = nil, form = nil) # rubocop:disable Metrics/AbcSize
authorization_definition = find_authorization_definition_from_name(name, extract_stage_type(stage))

if form && authorization_definition
target_form = authorization_definition.available_forms.find { |f| f.name == form }
return target_form.uid.underscore if target_form
end

return authorization_definition.authorization_request_class.to_s.underscore.split('/').last if authorization_definition

authorization_request_form = find_authorization_request_form_from_name(name)
Expand Down Expand Up @@ -69,23 +74,23 @@ def extract_stage_type(stage)
end

# rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
def create_authorization_requests_with_status(type, status = nil, count = 1, stage = nil, attributes = {})
def create_authorization_requests_with_status(type, status = nil, count = 1, stage = nil, form = nil, attributes = {})
attributes[:applicant] ||= FactoryBot.create(:user, current_organization: attributes[:organization])

if status
FactoryBot.create_list(
:authorization_request,
count,
extract_state_from_french_status(status),
find_factory_trait_from_name(type, stage),
find_factory_trait_from_name(type, stage, form),
organization: attributes[:applicant].current_organization,
**attributes,
)
else
FactoryBot.create_list(
:authorization_request,
count,
find_factory_trait_from_name(type, stage),
find_factory_trait_from_name(type, stage, form),
organization: attributes[:applicant].current_organization,
**attributes,
)
Expand Down

0 comments on commit a72712d

Please sign in to comment.