Skip to content

Commit

Permalink
Cucumber tests for API Impot Particulier production
Browse files Browse the repository at this point in the history
With more generic cucumber step for
API Impot Particulier with stage_type
  • Loading branch information
Samuelfaure committed Jan 8, 2025
1 parent 6ee4768 commit 103d37e
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 28 deletions.
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) |
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Fonctionnalité: Soumission d'une demande d'habilitation API Impôt Particulier
Et que je me connecte

Plan du scénario: Je soumets une demande d'habilitation valide
Quand je veux remplir une demande pour API Impot Particulier via le formulaire "<Nom du formulaire>" en bac à sable
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 Down
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)
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 103d37e

Please sign in to comment.