diff --git a/cron.json b/cron.json index decdd272ec..2bd8d00c5c 100644 --- a/cron.json +++ b/cron.json @@ -4,10 +4,6 @@ "command": "0 8 * * 0 ./packages/applications/scheduled-tasks/mettre-à-jour-gestionnaire-réseau.sh", "size": "M" }, - { - "command": "0 8 * * 1-5 ./packages/applications/scheduled-tasks/attribuer-grd.sh", - "size": "M" - }, { "command": "0 0 * * * ./packages/applications/scheduled-tasks/s3-backup.sh", "size": "M" diff --git a/package-lock.json b/package-lock.json index d1f22ec034..d13071d2b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27178,6 +27178,7 @@ "@potentiel-domain/tache": "*", "@potentiel-infrastructure/domain-adapters": "*", "@potentiel-infrastructure/email": "*", + "@potentiel-infrastructure/ore-client": "*", "@potentiel-infrastructure/pg-event-sourcing": "*", "@potentiel-infrastructure/pg-projections": "*", "@potentiel-libraries/pg-helpers": "*", diff --git a/packages/applications/bootstrap/package.json b/packages/applications/bootstrap/package.json index 4d846d64bf..17ca251d21 100644 --- a/packages/applications/bootstrap/package.json +++ b/packages/applications/bootstrap/package.json @@ -23,6 +23,7 @@ "@potentiel-domain/tache": "*", "@potentiel-infrastructure/domain-adapters": "*", "@potentiel-infrastructure/email": "*", + "@potentiel-infrastructure/ore-client": "*", "@potentiel-infrastructure/pg-event-sourcing": "*", "@potentiel-infrastructure/pg-projections": "*", "@potentiel-libraries/pg-helpers": "*", diff --git a/packages/applications/bootstrap/src/bootstrap.ts b/packages/applications/bootstrap/src/bootstrap.ts index ab608b5484..86c40d9932 100644 --- a/packages/applications/bootstrap/src/bootstrap.ts +++ b/packages/applications/bootstrap/src/bootstrap.ts @@ -1,9 +1,9 @@ import { Middleware, mediator } from 'mediateur'; import { getLogger } from '@potentiel-libraries/monitoring'; -import { SendEmail } from '@potentiel-applications/notifications'; -import { sendEmail as sendEmailMailjet } from '@potentiel-infrastructure/email'; +import { sendEmail } from '@potentiel-infrastructure/email'; import { executeSubscribersRetry } from '@potentiel-infrastructure/pg-event-sourcing'; +import { récupérerGRDParVille } from '@potentiel-infrastructure/ore-client'; import { setupLauréat } from './setupLauréat'; import { setupCandidature } from './setupCandidature'; @@ -22,13 +22,19 @@ import { setupStatistiques } from './setupStatistiques'; let unsubscribe: (() => Promise) | undefined; let mutex: Promise | undefined; -export const bootstrap = async ({ - middlewares, +const defaultDependencies = { sendEmail, -}: { + récupérerGRDParVille, +}; + +type BootstrapProps = { middlewares: Array; - sendEmail?: SendEmail; -}): Promise<() => Promise> => { + dependencies?: Partial; +}; +export const bootstrap = async ({ + middlewares, + dependencies, +}: BootstrapProps): Promise<() => Promise> => { // if there's already a bootstrap operation in progress, wait for it to finish if (mutex) { await mutex; @@ -40,10 +46,10 @@ export const bootstrap = async ({ mediator.use({ middlewares: [logMiddleware, ...middlewares], }); - - if (!sendEmail) { - sendEmail = sendEmailMailjet; - } + const allDependencies = { + ...defaultDependencies, + ...dependencies, + }; const unsetupHistorique = await setupHistorique(); @@ -51,15 +57,15 @@ export const bootstrap = async ({ setupUtilisateur(); await setupAppelOffre(); setupDocumentProjet(); - const unsetupCandidature = await setupCandidature({ sendEmail }); - const unsetupPériode = await setupPériode({ sendEmail }); + const unsetupCandidature = await setupCandidature(allDependencies); + const unsetupPériode = await setupPériode(allDependencies); const unsetupTâche = await setupTâche(); - const unsetupTâchePlanifiée = await setupTâchePlanifiée({ sendEmail }); + const unsetupTâchePlanifiée = await setupTâchePlanifiée(allDependencies); - const unsetupEliminé = await setupEliminé({ sendEmail }); - const unsetupLauréat = await setupLauréat({ sendEmail }); - const unsetupGestionnaireRéseau = await setupRéseau(); + const unsetupEliminé = await setupEliminé(allDependencies); + const unsetupLauréat = await setupLauréat(allDependencies); + const unsetupGestionnaireRéseau = await setupRéseau(allDependencies); getLogger().info('Application bootstrapped'); diff --git "a/packages/applications/bootstrap/src/setupR\303\251seau.ts" "b/packages/applications/bootstrap/src/setupR\303\251seau.ts" index 3a80b4761a..2cc2006e31 100644 --- "a/packages/applications/bootstrap/src/setupR\303\251seau.ts" +++ "b/packages/applications/bootstrap/src/setupR\303\251seau.ts" @@ -16,7 +16,10 @@ import { listProjection, } from '@potentiel-infrastructure/pg-projections'; -export const setupRéseau = async () => { +type SetupRéseauDependencies = { + récupérerGRDParVille: Raccordement.RécupererGRDParVillePort; +}; +export const setupRéseau = async ({ récupérerGRDParVille }: SetupRéseauDependencies) => { registerRéseauUseCases({ loadAggregate, }); @@ -32,7 +35,9 @@ export const setupRéseau = async () => { RaccordementProjector.register(); // Sagas - Raccordement.RaccordementSaga.register(); + Raccordement.RaccordementSaga.register({ + récupérerGRDParVille, + }); const unsubscribeGestionnaireRéseauProjector = await subscribe({ @@ -88,10 +93,10 @@ export const setupRéseau = async () => { }, ); - const unsubscribeRaccordementSaga = await subscribe< + const unsubscribeRaccordementAbandonSaga = await subscribe< Raccordement.RaccordementSaga.SubscriptionEvent & Event >({ - name: 'raccordement-saga', + name: 'raccordement-abandon-saga', streamCategory: 'abandon', eventType: ['AbandonAccordé-V1'], eventHandler: async (event) => { @@ -101,10 +106,24 @@ export const setupRéseau = async () => { }); }, }); + const unsubscribeRaccordementLauréatSaga = await subscribe< + Raccordement.RaccordementSaga.SubscriptionEvent & Event + >({ + name: 'raccordement-laureat-saga', + streamCategory: 'lauréat', + eventType: ['LauréatNotifié-V1'], + eventHandler: async (event) => { + await mediator.publish({ + type: 'System.Réseau.Raccordement.Saga.Execute', + data: event, + }); + }, + }); return async () => { await unsubscribeGestionnaireRéseauProjector(); await unsubscribeRaccordementProjector(); - await unsubscribeRaccordementSaga(); + await unsubscribeRaccordementAbandonSaga(); + await unsubscribeRaccordementLauréatSaga(); }; }; diff --git a/packages/applications/bootstrap/tsconfig.json b/packages/applications/bootstrap/tsconfig.json index cb042759e1..2520a5a565 100644 --- a/packages/applications/bootstrap/tsconfig.json +++ b/packages/applications/bootstrap/tsconfig.json @@ -32,6 +32,9 @@ { "path": "../../infrastructure/email" }, + { + "path": "../../infrastructure/ore-client" + }, { "path": "../../infrastructure/pg-event-sourcing" }, diff --git a/packages/applications/scheduled-tasks/attribuer-grd.sh b/packages/applications/scheduled-tasks/attribuer-grd.sh deleted file mode 100755 index 8e475e0c25..0000000000 --- a/packages/applications/scheduled-tasks/attribuer-grd.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /bin/bash -l - -if [ -z $EVENT_STORE_CONNECTION_STRING ] -then - echo "Connection is missing!" - exit 1 -fi - -if [ -z $ORE_ENDPOINT ] -then - echo "Ore endpoint is missing!" - exit 1 -fi - -echo "Launching job [ATTRIBUER GRD]" - -npm run start:attribuer-grd -w @potentiel-applications/scheduled-tasks - -exit 0 diff --git a/packages/applications/scheduled-tasks/package.json b/packages/applications/scheduled-tasks/package.json index ac5acb13f0..23a2a3521d 100644 --- a/packages/applications/scheduled-tasks/package.json +++ b/packages/applications/scheduled-tasks/package.json @@ -5,7 +5,6 @@ "private": true, "scripts": { "build": "tsc", - "start:attribuer-grd": "node ./dist/raccordement/attribuer-gestionnaire-réseau", "start:relancer-abandon-sans-preuve": "node ./dist/abandon/relancer-abandon-sans-preuve", "start:déplacer-fichiers-vers-bucket-secnum": "node ./dist/déplacer-fichiers-vers-bucket-secnum", "start:créer-backup": "node ./dist/backup/créer-backup", diff --git "a/packages/applications/scheduled-tasks/src/raccordement/attribuer-gestionnaire-r\303\251seau.ts" "b/packages/applications/scheduled-tasks/src/raccordement/attribuer-gestionnaire-r\303\251seau.ts" deleted file mode 100644 index 706d8e4657..0000000000 --- "a/packages/applications/scheduled-tasks/src/raccordement/attribuer-gestionnaire-r\303\251seau.ts" +++ /dev/null @@ -1,101 +0,0 @@ -import { mediator } from 'mediateur'; - -import { getLogger } from '@potentiel-libraries/monitoring'; -import { - GestionnaireRéseau, - Raccordement, - registerRéseauQueries, - registerRéseauUseCases, -} from '@potentiel-domain/reseau'; -import { listerProjetForOreAdapter } from '@potentiel-infrastructure/domain-adapters'; -import { loadAggregate } from '@potentiel-infrastructure/pg-event-sourcing'; -import { - countProjection, - findProjection, - listProjection, -} from '@potentiel-infrastructure/pg-projections'; -import { récupérerGRDParVille } from '@potentiel-infrastructure/ore-client'; -import { Option } from '@potentiel-libraries/monads'; - -registerRéseauUseCases({ - loadAggregate, -}); - -registerRéseauQueries({ - list: listProjection, - find: findProjection, - count: countProjection, -}); - -(async () => { - getLogger().info('Lancement du script...'); - - try { - const projetsClassé = await listerProjetForOreAdapter({}); - - const raccordements = await mediator.send({ - type: 'Réseau.Raccordement.Query.ListerRaccordement', - data: {}, - }); - - const raccordementsProjetsIds = raccordements.items.map((raccordement) => - raccordement.identifiantProjet.formatter(), - ); - - const projetsSansGestionnaire = projetsClassé.filter( - (projet) => !raccordementsProjetsIds.includes(projet.identifiantProjet), - ); - - getLogger().info(`${projetsSansGestionnaire.length} projets sans raccordement`); - - let projetsSansGestionnaireTrouvés = 0; - const codeEicInconnu = GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu.codeEIC; - - for (const projet of projetsSansGestionnaire) { - const gestionnaireParVille = await récupérerGRDParVille({ - codePostal: projet.localité.codePostal, - commune: projet.localité.commune, - }); - - const grdOuInconnu = Option.match(gestionnaireParVille) - .some((grd) => grd) - .none(() => { - projetsSansGestionnaireTrouvés++; - return { - codeEIC: codeEicInconnu, - raisonSociale: 'Inconnu', - }; - }); - - try { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseauValue: grdOuInconnu.codeEIC, - identifiantProjetValue: projet.identifiantProjet, - }, - }); - - const emoji = grdOuInconnu.codeEIC === codeEicInconnu ? '⚠️' : '✅'; - getLogger().info( - `${emoji} Gestionnaire ${grdOuInconnu.raisonSociale} attribué au projet ${projet.identifiantProjet}`, - ); - } catch (error) { - getLogger().error(error as Error); - continue; - } - } - - if (projetsSansGestionnaire.length) { - getLogger().info( - `Sur ${projetsSansGestionnaire.length} projets classés sans raccordement, nous n'avons pas pu attribuer de GRD à ${projetsSansGestionnaireTrouvés} d'entre eux`, - ); - } - - getLogger().info('Fin du script ✨'); - - process.exit(0); - } catch (error) { - getLogger().error(error as Error); - } -})(); diff --git "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/ModifierDemandeCompl\303\250teRaccordement.form.tsx" "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/ModifierDemandeCompl\303\250teRaccordement.form.tsx" index af8ff22a42..bbb8a64caf 100644 --- "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/ModifierDemandeCompl\303\250teRaccordement.form.tsx" +++ "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/ModifierDemandeCompl\303\250teRaccordement.form.tsx" @@ -56,8 +56,7 @@ export const ModifierDemandeComplèteRaccordementForm: FC< ValidationErrors >({}); - const { aideSaisieRéférenceDossierRaccordement, identifiantGestionnaireRéseau } = - gestionnaireRéseauActuel; + const { aideSaisieRéférenceDossierRaccordement } = gestionnaireRéseauActuel; return (
-
Gestionnaire réseau :{' '} diff --git "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/modifierDemandeCompl\303\250teRaccordement.action.ts" "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/modifierDemandeCompl\303\250teRaccordement.action.ts" index f235d633cb..5c265c564e 100644 --- "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/modifierDemandeCompl\303\250teRaccordement.action.ts" +++ "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement/modifierDemandeCompl\303\250teRaccordement.action.ts" @@ -12,7 +12,6 @@ import { keepOrUpdateSingleDocument } from '@/utils/zod/document/keepOrUpdateDoc const schema = zod.object({ identifiantProjet: zod.string().min(1), - identifiantGestionnaireReseau: zod.string().min(1), dateQualification: zod.string().min(1, { message: 'Champ obligatoire' }), referenceDossierRaccordement: zod.string().min(1), referenceDossierRaccordementActuelle: zod.string().min(1), @@ -25,7 +24,6 @@ const action: FormAction = async ( _, { identifiantProjet, - identifiantGestionnaireReseau, accuseReception, dateQualification, referenceDossierRaccordement, @@ -49,7 +47,6 @@ const action: FormAction = async ( type: 'Réseau.Raccordement.UseCase.ModifierDemandeComplèteRaccordement', data: { identifiantProjetValue: identifiantProjet, - identifiantGestionnaireRéseauValue: identifiantGestionnaireReseau, accuséRéceptionValue: accuseReception, dateQualificationValue: new Date(dateQualification).toISOString(), référenceDossierRaccordementValue: referenceDossierRaccordement, diff --git "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.form.tsx" "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.form.tsx" index 6476a52b38..0d89f01ae8 100644 --- "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.form.tsx" +++ "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.form.tsx" @@ -51,20 +51,17 @@ export const TransmettreDemandeComplèteRaccordementForm = ({ const [selectedIdentifiantGestionnaireRéseau, setSelectedIdentifiantGestionnaireRéseau] = useState(identifiantGestionnaireRéseauActuel); - const alreadyHasAGestionnaireRéseau = - identifiantGestionnaireRéseauActuel && identifiantGestionnaireRéseauActuel !== 'inconnu'; - - const gestionnaireActuel = selectedIdentifiantGestionnaireRéseau + const aideSaisieRéférenceDossierRaccordement = selectedIdentifiantGestionnaireRéseau ? listeGestionnairesRéseau.find( (gestionnaire) => gestionnaire.identifiantGestionnaireRéseau.codeEIC === selectedIdentifiantGestionnaireRéseau, - ) + )?.aideSaisieRéférenceDossierRaccordement : undefined; - const format = gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement?.format ?? Option.none; - const légende = gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement.légende ?? Option.none; + const format = aideSaisieRéférenceDossierRaccordement?.format ?? Option.none; + const légende = aideSaisieRéférenceDossierRaccordement?.légende ?? Option.none; const expressionReguliere = - gestionnaireActuel?.aideSaisieRéférenceDossierRaccordement?.expressionReguliere?.expression ?? + aideSaisieRéférenceDossierRaccordement?.expressionReguliere?.expression ?? ExpressionRegulière.accepteTout.expression; return ( @@ -103,13 +100,8 @@ export const TransmettreDemandeComplèteRaccordementForm = ({ > - {alreadyHasAGestionnaireRéseau ? ( + {Option.isSome(gestionnaireRéseauActuel) ? (
-
Gestionnaire réseau actuel {aDéjàTransmisUneDemandeComplèteDeRaccordement ? null : ( @@ -119,8 +111,8 @@ export const TransmettreDemandeComplèteRaccordementForm = ({ )}
- {gestionnaireActuel?.raisonSociale} ( - {gestionnaireActuel?.identifiantGestionnaireRéseau?.codeEIC}) + {gestionnaireRéseauActuel.raisonSociale} ( + {gestionnaireRéseauActuel.identifiantGestionnaireRéseau.codeEIC})
) : ( diff --git "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.stories.tsx" "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.stories.tsx" index aefa97abad..b6a23f1309 100644 --- "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.stories.tsx" +++ "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/TransmettreDemandeCompl\303\250teRaccordement.stories.tsx" @@ -35,20 +35,35 @@ const listeGestionnairesRéseau = Array.from({ length: 3 }, (_, i) => ({ contactEmail: Option.none, })); +listeGestionnairesRéseau[0].aideSaisieRéférenceDossierRaccordement = { + expressionReguliere: ExpressionRegulière.convertirEnValueType('[a-zA-Z]{3}'), + format: 'ABC', + légende: 'légende', +}; + export const Default: Story = { args: { listeGestionnairesRéseau, - gestionnaireRéseauActuel: Option.none, + gestionnaireRéseauActuel: listeGestionnairesRéseau[1], identifiantProjet: IdentifiantProjet.convertirEnValueType('PPE2 - Bâtiment#4#1#id-cre-738'), delaiDemandeDeRaccordementEnMois: { texte: '3 mois', valeur: 3 }, aDéjàTransmisUneDemandeComplèteDeRaccordement: false, }, }; -export const AvecGestionnaire: Story = { +export const GestionnaireRéseauInconnu: Story = { args: { listeGestionnairesRéseau, - gestionnaireRéseauActuel: listeGestionnairesRéseau[1], + gestionnaireRéseauActuel: { + aideSaisieRéférenceDossierRaccordement: { + expressionReguliere: ExpressionRegulière.accepteTout, + format: Option.none, + légende: Option.none, + }, + contactEmail: Option.none, + identifiantGestionnaireRéseau: GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu, + raisonSociale: '', + }, identifiantProjet: IdentifiantProjet.convertirEnValueType('PPE2 - Bâtiment#4#1#id-cre-738'), delaiDemandeDeRaccordementEnMois: { texte: '3 mois', valeur: 3 }, aDéjàTransmisUneDemandeComplèteDeRaccordement: false, diff --git "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/transmettreDemandeCompl\303\250teRaccordement.action.ts" "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/transmettreDemandeCompl\303\250teRaccordement.action.ts" index 2d3bca157b..bff559e778 100644 --- "a/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/transmettreDemandeCompl\303\250teRaccordement.action.ts" +++ "b/packages/applications/ssr/src/components/pages/r\303\251seau/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement/transmettreDemandeCompl\303\250teRaccordement.action.ts" @@ -8,11 +8,12 @@ import { Routes } from '@potentiel-applications/routes'; import { FormAction, FormState, formAction } from '@/utils/formAction'; import { singleDocument } from '@/utils/zod/document/singleDocument'; +import { withUtilisateur } from '@/utils/withUtilisateur'; const schema = zod.object({ identifiantProjet: zod.string().min(1), dateQualification: zod.string().min(1, { message: 'Champ obligatoire' }), - identifiantGestionnaireReseau: zod.string().min(1), + identifiantGestionnaireReseau: zod.string().optional(), referenceDossier: zod.string().min(1, { message: 'Champ obligatoire' }), accuseReception: singleDocument({ acceptedFileTypes: ['application/pdf'] }), }); @@ -28,22 +29,32 @@ const action: FormAction = async ( referenceDossier, accuseReception, }, -) => { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.TransmettreDemandeComplèteRaccordement', - data: { - identifiantProjetValue: identifiantProjet, - dateQualificationValue: new Date(dateQualification).toISOString(), - identifiantGestionnaireRéseauValue: identifiantGestionnaireReseau, - référenceDossierValue: referenceDossier, - accuséRéceptionValue: accuseReception, - }, +) => + withUtilisateur(async (utilisateur) => { + if (identifiantGestionnaireReseau) { + await mediator.send({ + type: 'Réseau.Raccordement.UseCase.ModifierGestionnaireRéseauRaccordement', + data: { + identifiantProjetValue: identifiantProjet, + identifiantGestionnaireRéseauValue: identifiantGestionnaireReseau, + rôleValue: utilisateur.role.nom, + }, + }); + } + await mediator.send({ + type: 'Réseau.Raccordement.UseCase.TransmettreDemandeComplèteRaccordement', + data: { + identifiantProjetValue: identifiantProjet, + dateQualificationValue: new Date(dateQualification).toISOString(), + référenceDossierValue: referenceDossier, + accuséRéceptionValue: accuseReception, + }, + }); + + return { + status: 'success', + redirection: { url: Routes.Raccordement.détail(identifiantProjet) }, + }; }); - return { - status: 'success', - redirection: { url: Routes.Raccordement.détail(identifiantProjet) }, - }; -}; - export const transmettreDemandeComplèteRaccordementAction = formAction(action, schema); diff --git "a/packages/domain/r\303\251seau/src/raccordement/attribuer/attribuerGestionnaireR\303\251seau.usecase.ts" "b/packages/domain/r\303\251seau/src/raccordement/attribuer/attribuerGestionnaireR\303\251seau.usecase.ts" deleted file mode 100644 index db9272efd0..0000000000 --- "a/packages/domain/r\303\251seau/src/raccordement/attribuer/attribuerGestionnaireR\303\251seau.usecase.ts" +++ /dev/null @@ -1,34 +0,0 @@ -import { Message, MessageHandler, mediator } from 'mediateur'; - -import { IdentifiantProjet } from '@potentiel-domain/common'; - -import { IdentifiantGestionnaireRéseau } from '../../gestionnaire'; - -import { AttribuerGestionnaireRéseauCommand } from './attribuerGestionnaireRéseau.command'; - -export type AttribuerGestionnaireRéseauUseCase = Message< - 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - { - identifiantGestionnaireRéseauValue: string; - identifiantProjetValue: string; - } ->; - -export const registerAttribuerGestionnaireRéseauUseCase = () => { - const handler: MessageHandler = async ({ - identifiantGestionnaireRéseauValue, - identifiantProjetValue, - }) => { - await mediator.send({ - type: 'Réseau.Raccordement.Command.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseau: IdentifiantGestionnaireRéseau.convertirEnValueType( - identifiantGestionnaireRéseauValue, - ), - identifiantProjet: IdentifiantProjet.convertirEnValueType(identifiantProjetValue), - }, - }); - }; - - mediator.register('Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', handler); -}; diff --git "a/packages/domain/r\303\251seau/src/raccordement/index.ts" "b/packages/domain/r\303\251seau/src/raccordement/index.ts" index ce5ce767e1..db8cb15fa0 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/index.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/index.ts" @@ -1,4 +1,3 @@ -import { AttribuerGestionnaireRéseauUseCase } from './attribuer/attribuerGestionnaireRéseau.usecase'; import { ConsulterDossierRaccordementQuery, ConsulterDossierRaccordementReadModel, @@ -83,7 +82,6 @@ export type RaccordementUseCase = | TransmettreDateMiseEnServiceUseCase | TransmettreDemandeComplèteRaccordementUseCase | TransmettrePropositionTechniqueEtFinancièreUseCase - | AttribuerGestionnaireRéseauUseCase | SupprimerDossierDuRaccordementUseCase; export type { @@ -94,7 +92,6 @@ export type { TransmettreDateMiseEnServiceUseCase, TransmettreDemandeComplèteRaccordementUseCase, TransmettrePropositionTechniqueEtFinancièreUseCase, - AttribuerGestionnaireRéseauUseCase, SupprimerDossierDuRaccordementUseCase, }; @@ -144,3 +141,4 @@ export * from './raccordement.entity'; // Saga export * as RaccordementSaga from './raccordement.saga'; +export { RécupererGRDParVillePort } from './raccordement.saga'; diff --git "a/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.command.ts" "b/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.command.ts" index f7982b053d..a32dc848ed 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.command.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.command.ts" @@ -7,13 +7,11 @@ import { Role } from '@potentiel-domain/utilisateur'; import * as RéférenceDossierRaccordement from '../référenceDossierRaccordement.valueType'; import { loadRaccordementAggregateFactory } from '../raccordement.aggregate'; import { loadGestionnaireRéseauFactory } from '../../gestionnaire/gestionnaireRéseau.aggregate'; -import { IdentifiantGestionnaireRéseau } from '../../gestionnaire'; export type ModifierDemandeComplèteRaccordementCommand = Message< 'Réseau.Raccordement.Command.ModifierDemandeComplèteRaccordement', { identifiantProjet: IdentifiantProjet.ValueType; - identifiantGestionnaireRéseau: IdentifiantGestionnaireRéseau.ValueType; dateQualification: DateTime.ValueType; référenceDossierRaccordement: RéférenceDossierRaccordement.ValueType; formatAccuséRéception: string; @@ -29,14 +27,15 @@ export const registerModifierDemandeComplèteRaccordementCommand = ( const handler: MessageHandler = async ({ identifiantProjet, - identifiantGestionnaireRéseau, dateQualification, référenceDossierRaccordement, formatAccuséRéception, rôle, }) => { const raccordement = await loadRaccordement(identifiantProjet); - const gestionnaireRéseau = await loadGestionnaireRéseau(identifiantGestionnaireRéseau, true); + const gestionnaireRéseau = await loadGestionnaireRéseau( + raccordement.identifiantGestionnaireRéseau, + ); await raccordement.modifierDemandeComplèteRaccordement({ identifiantProjet, diff --git "a/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.usecase.ts" "b/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.usecase.ts" index 5ccfba626c..31259e3346 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.usecase.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/modifier/modifierDemandeCompl\303\250teRaccordement.usecase.ts" @@ -6,7 +6,6 @@ import { Role } from '@potentiel-domain/utilisateur'; import * as TypeDocumentRaccordement from '../typeDocumentRaccordement.valueType'; import * as RéférenceDossierRaccordement from '../référenceDossierRaccordement.valueType'; -import { IdentifiantGestionnaireRéseau } from '../../gestionnaire'; import { ModifierDemandeComplèteRaccordementCommand } from './modifierDemandeComplèteRaccordement.command'; @@ -15,7 +14,6 @@ export type ModifierDemandeComplèteRaccordementUseCase = Message< { identifiantProjetValue: string; dateQualificationValue: string; - identifiantGestionnaireRéseauValue: string; référenceDossierRaccordementValue: string; rôleValue: string; accuséRéceptionValue: { @@ -29,7 +27,6 @@ export const registerModifierDemandeComplèteRaccordementUseCase = () => { const runner: MessageHandler = async ({ accuséRéceptionValue: { content, format }, dateQualificationValue, - identifiantGestionnaireRéseauValue, identifiantProjetValue, référenceDossierRaccordementValue, rôleValue, @@ -45,9 +42,6 @@ export const registerModifierDemandeComplèteRaccordementUseCase = () => { const identifiantProjet = IdentifiantProjet.convertirEnValueType(identifiantProjetValue); const dateQualification = DateTime.convertirEnValueType(dateQualificationValue); - const identifiantGestionnaireRéseau = IdentifiantGestionnaireRéseau.convertirEnValueType( - identifiantGestionnaireRéseauValue, - ); const référenceDossierRaccordement = RéférenceDossierRaccordement.convertirEnValueType( référenceDossierRaccordementValue, ); @@ -66,7 +60,6 @@ export const registerModifierDemandeComplèteRaccordementUseCase = () => { data: { dateQualification, formatAccuséRéception: format, - identifiantGestionnaireRéseau, identifiantProjet, référenceDossierRaccordement, rôle, diff --git "a/packages/domain/r\303\251seau/src/raccordement/raccordement.register.ts" "b/packages/domain/r\303\251seau/src/raccordement/raccordement.register.ts" index aac106667a..6108f270af 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/raccordement.register.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/raccordement.register.ts" @@ -34,7 +34,6 @@ import { registerListerRaccordementQuery, ListerRaccordementQueryDependencies, } from './lister/listerRaccordement.query'; -import { registerAttribuerGestionnaireRéseauUseCase } from './attribuer/attribuerGestionnaireRéseau.usecase'; import { registerAttribuerGestionnaireCommand } from './attribuer/attribuerGestionnaireRéseau.command'; import { ConsulterNombreDeRaccordementDependencies, @@ -89,6 +88,5 @@ export const registerRaccordementUseCases = ({ registerTransmettreDateMiseEnServiceUseCase(); registerTransmettreDemandeComplèteRaccordementUseCase(); registerTransmettrePropositionTechniqueEtFinancièreUseCase(); - registerAttribuerGestionnaireRéseauUseCase(); registerSupprimerDossierDuRaccordementUseCase(); }; diff --git "a/packages/domain/r\303\251seau/src/raccordement/raccordement.saga.ts" "b/packages/domain/r\303\251seau/src/raccordement/raccordement.saga.ts" index 7ab7f0f263..c6b09698df 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/raccordement.saga.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/raccordement.saga.ts" @@ -1,20 +1,61 @@ import { Message, MessageHandler, mediator } from 'mediateur'; import { IdentifiantProjet } from '@potentiel-domain/common'; -import { Abandon } from '@potentiel-domain/laureat'; +import { Abandon, Lauréat } from '@potentiel-domain/laureat'; +import { Candidature } from '@potentiel-domain/candidature'; +import { Option } from '@potentiel-libraries/monads'; + +import * as IdentifiantGestionnaireRéseau from '../gestionnaire/identifiantGestionnaireRéseau.valueType'; import { SupprimerRaccordementCommand } from './supprimer/supprimerRaccordement.command'; +import { AttribuerGestionnaireRéseauCommand } from './attribuer/attribuerGestionnaireRéseau.command'; -export type SubscriptionEvent = Abandon.AbandonAccordéEvent; +export type SubscriptionEvent = Abandon.AbandonAccordéEvent | Lauréat.LauréatNotifiéEvent; export type Execute = Message<'System.Réseau.Raccordement.Saga.Execute', SubscriptionEvent>; -export const register = () => { +export type RécupererGRDParVillePort = (props: { + codePostal: string; + commune: string; +}) => Promise>; + +export type RegisterRaccordementSagaDependencies = { + récupérerGRDParVille: RécupererGRDParVillePort; +}; + +export const register = ({ récupérerGRDParVille }: RegisterRaccordementSagaDependencies) => { const handler: MessageHandler = async (event) => { const { payload: { identifiantProjet }, } = event; + switch (event.type) { + case 'LauréatNotifié-V1': + const candidature = await mediator.send({ + type: 'Candidature.Query.ConsulterCandidature', + data: { + identifiantProjet, + }, + }); + if (Option.isNone(candidature)) { + throw new Error('Candidature non trouvée'); + } + const grd = await récupérerGRDParVille({ + codePostal: candidature.localité.codePostal, + commune: candidature.localité.commune, + }); + const identifiantGestionnaireRéseau = Option.match(grd) + .some((grd) => IdentifiantGestionnaireRéseau.convertirEnValueType(grd.codeEIC)) + .none(() => IdentifiantGestionnaireRéseau.inconnu); + + await mediator.send({ + type: 'Réseau.Raccordement.Command.AttribuerGestionnaireRéseau', + data: { + identifiantProjet: IdentifiantProjet.convertirEnValueType(identifiantProjet), + identifiantGestionnaireRéseau, + }, + }); + break; case 'AbandonAccordé-V1': await mediator.send({ type: 'Réseau.Raccordement.Command.SupprimerRaccordement', diff --git "a/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.command.ts" "b/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.command.ts" index 6acc5fbb9b..e26b5a2070 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.command.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.command.ts" @@ -4,7 +4,6 @@ import { DateTime, IdentifiantProjet } from '@potentiel-domain/common'; import { LoadAggregate } from '@potentiel-domain/core'; import { Abandon, Lauréat } from '@potentiel-domain/laureat'; -import { IdentifiantGestionnaireRéseau } from '../../gestionnaire'; import * as RéférenceDossierRaccordement from '../référenceDossierRaccordement.valueType'; import { loadGestionnaireRéseauFactory } from '../../gestionnaire/gestionnaireRéseau.aggregate'; import { loadRaccordementAggregateFactory } from '../raccordement.aggregate'; @@ -12,7 +11,6 @@ import { loadRaccordementAggregateFactory } from '../raccordement.aggregate'; export type TransmettreDemandeComplèteRaccordementCommand = Message< 'Réseau.Raccordement.Command.TransmettreDemandeComplèteRaccordement', { - identifiantGestionnaireRéseau: IdentifiantGestionnaireRéseau.ValueType; identifiantProjet: IdentifiantProjet.ValueType; dateQualification: DateTime.ValueType; référenceDossier: RéférenceDossierRaccordement.ValueType; @@ -31,19 +29,20 @@ export const registerTransmettreDemandeComplèteRaccordementCommand = ( const handler: MessageHandler = async ({ identifiantProjet, dateQualification, - identifiantGestionnaireRéseau, référenceDossier, formatAccuséRéception, }) => { await loadLauréat(identifiantProjet); const abandon = await loadAbandon(identifiantProjet, false); - const gestionnaireRéseau = await loadGestionnaireRéseau(identifiantGestionnaireRéseau, true); - const raccordement = await loadRaccordement(identifiantProjet, false); + const raccordement = await loadRaccordement(identifiantProjet); + const gestionnaireRéseau = await loadGestionnaireRéseau( + raccordement.identifiantGestionnaireRéseau, + ); await raccordement.transmettreDemande({ dateQualification, - identifiantGestionnaireRéseau, + identifiantGestionnaireRéseau: raccordement.identifiantGestionnaireRéseau, identifiantProjet, référenceDossier, aUnAbandonAccordé: abandon.estAccordé(), diff --git "a/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.usecase.ts" "b/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.usecase.ts" index bde2a4da72..678ae1ef0d 100644 --- "a/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.usecase.ts" +++ "b/packages/domain/r\303\251seau/src/raccordement/transmettre/transmettreDemandeCompl\303\250teRaccordement.usecase.ts" @@ -5,7 +5,6 @@ import { DateTime, IdentifiantProjet } from '@potentiel-domain/common'; import * as TypeDocumentRaccordement from '../typeDocumentRaccordement.valueType'; import * as RéférenceDossierRaccordement from '../référenceDossierRaccordement.valueType'; -import { IdentifiantGestionnaireRéseau } from '../../gestionnaire'; import { TransmettreDemandeComplèteRaccordementCommand } from './transmettreDemandeComplèteRaccordement.command'; @@ -14,7 +13,6 @@ export type TransmettreDemandeComplèteRaccordementUseCase = Message< { identifiantProjetValue: string; dateQualificationValue: string; - identifiantGestionnaireRéseauValue: string; référenceDossierValue: string; accuséRéceptionValue: { content: ReadableStream; @@ -26,7 +24,6 @@ export type TransmettreDemandeComplèteRaccordementUseCase = Message< export const registerTransmettreDemandeComplèteRaccordementUseCase = () => { const runner: MessageHandler = async ({ dateQualificationValue, - identifiantGestionnaireRéseauValue, identifiantProjetValue, référenceDossierValue, accuséRéceptionValue: { format, content }, @@ -42,9 +39,7 @@ export const registerTransmettreDemandeComplèteRaccordementUseCase = () => { const identifiantProjet = IdentifiantProjet.convertirEnValueType(identifiantProjetValue); const dateQualification = DateTime.convertirEnValueType(dateQualificationValue); - const identifiantGestionnaireRéseau = IdentifiantGestionnaireRéseau.convertirEnValueType( - identifiantGestionnaireRéseauValue, - ); + /** * Merci de laisser la commande transmettre en première puisqu'elle fait des vérifications (notamment sur l'abandon du projet) */ @@ -52,7 +47,6 @@ export const registerTransmettreDemandeComplèteRaccordementUseCase = () => { type: 'Réseau.Raccordement.Command.TransmettreDemandeComplèteRaccordement', data: { identifiantProjet, - identifiantGestionnaireRéseau, dateQualification, référenceDossier: RéférenceDossierRaccordement.convertirEnValueType(référenceDossierValue), formatAccuséRéception: format, diff --git a/packages/infrastructure/domain-adapters/src/projet/index.ts b/packages/infrastructure/domain-adapters/src/projet/index.ts index 8dac2be33b..d03c1e52c2 100644 --- a/packages/infrastructure/domain-adapters/src/projet/index.ts +++ b/packages/infrastructure/domain-adapters/src/projet/index.ts @@ -1,3 +1,2 @@ export * from './consulterCahierDesChargesChoisi.adapter'; export * from './listerIdentifiantsProjetsParPorteur.adapter'; -export * from './listerProjetForOre.adapter'; diff --git a/packages/infrastructure/domain-adapters/src/projet/listerProjetForOre.adapter.ts b/packages/infrastructure/domain-adapters/src/projet/listerProjetForOre.adapter.ts deleted file mode 100644 index 2581c56be7..0000000000 --- a/packages/infrastructure/domain-adapters/src/projet/listerProjetForOre.adapter.ts +++ /dev/null @@ -1,58 +0,0 @@ -import format from 'pg-format'; - -import { executeSelect } from '@potentiel-libraries/pg-helpers'; -import { IdentifiantProjet } from '@potentiel-domain/common'; - -export type ProjetListéPourOREReadModel = { - legacyId: string; - identifiantProjet: string; - appelOffre: string; - période: string; - famille: string; - numéroCRE: string; - localité: { - commune: string; - codePostal: string; - }; -}; - -type Props = { - limit?: number; - offset?: number; -}; - -export const listerProjetForOreAdapter = async ({ limit, offset }: Props) => { - const selectProjectQuery = format(` - SELECT json_build_object( - 'legacyId', "id", - 'appelOffre', "appelOffreId", - 'période', "periodeId", - 'famille', "familleId", - 'numéroCRE', "numeroCRE", - 'localité', json_build_object( - 'commune', "communeProjet", - 'codePostal', "codePostalProjet" - ) - ) as value - FROM "projects" - WHERE "classe" = 'Classé' - AND "abandonedOn" = '0' - ${limit !== undefined ? `LIMIT ${limit}` : ''} - ${offset !== undefined ? `OFFSET ${limit}` : ''} -`); - - const projets = await executeSelect<{ - value: Omit; - }>(selectProjectQuery); - - const projectsWithIdentifiantProject = projets.map((projet) => { - return { - ...projet.value, - identifiantProjet: IdentifiantProjet.convertirEnValueType( - `${projet.value.appelOffre}#${projet.value.période}#${projet.value.famille}#${projet.value.numéroCRE}`, - ).formatter(), - }; - }); - - return projectsWithIdentifiantProject; -}; diff --git a/packages/specifications/src/candidature/fixtures/importerCandidature.fixture.ts b/packages/specifications/src/candidature/fixtures/importerCandidature.fixture.ts index 4ee2877e4e..761f0f3b84 100644 --- a/packages/specifications/src/candidature/fixtures/importerCandidature.fixture.ts +++ b/packages/specifications/src/candidature/fixtures/importerCandidature.fixture.ts @@ -5,6 +5,7 @@ import { IdentifiantProjet } from '@potentiel-domain/common'; import { appelsOffreData } from '@potentiel-domain/inmemory-referential'; import { AbstractFixture, DeepPartial } from '../../fixture'; +import { getFakeLocation } from '../../helpers/getFakeLocation'; interface ImporterCandidature { identifiantProjet: string; @@ -43,10 +44,7 @@ export class ImporterCandidatureFixture const localitéValue = { adresse1: faker.location.streetAddress(), adresse2: faker.location.secondaryAddress(), - codePostal: faker.location.zipCode(), - commune: faker.location.city(), - région: faker.location.state(), - département: faker.location.state(), + ...getFakeLocation(), ...values.localitéValue, }; diff --git "a/packages/specifications/src/gestionnaireR\303\251seau/gestionnaireR\303\251seau.world.ts" "b/packages/specifications/src/gestionnaireR\303\251seau/gestionnaireR\303\251seau.world.ts" index 529419dbef..3c8e791d48 100644 --- "a/packages/specifications/src/gestionnaireR\303\251seau/gestionnaireR\303\251seau.world.ts" +++ "b/packages/specifications/src/gestionnaireR\303\251seau/gestionnaireR\303\251seau.world.ts" @@ -9,6 +9,13 @@ type GestionnaireRéseau = { contactEmail?: string; }; +type OREItem = { + commune: string; + codePostal: string; + raisonSociale: string; + codeEIC: string; +}; + export class GestionnaireRéseauWorld { #gestionnairesRéseauFixtures: Map = new Map(); get gestionnairesRéseauFixtures() { @@ -20,7 +27,10 @@ export class GestionnaireRéseauWorld { return this.#résultatsValidation; } - constructor() {} + #référentielOREFixtures: OREItem[] = []; + get référentielOREFixtures() { + return this.#référentielOREFixtures; + } rechercherGestionnaireRéseauFixture(raisonSociale: string): GestionnaireRéseau { const gestionnaireRéseau = this.#gestionnairesRéseauFixtures.get(raisonSociale); @@ -33,4 +43,17 @@ export class GestionnaireRéseauWorld { return JSON.parse(JSON.stringify(gestionnaireRéseau)); } + + rechercherOREParVille({ codePostal, commune }: { codePostal: string; commune: string }) { + const item = this.#référentielOREFixtures.find( + (ore) => ore.codePostal === codePostal && ore.commune === commune, + ); + if (item) { + return { + codeEIC: item.codeEIC, + raisonSociale: item.raisonSociale, + }; + } + return; + } } diff --git "a/packages/specifications/src/gestionnaireR\303\251seau/stepDefinitions/gestionnaireR\303\251seau.given.ts" "b/packages/specifications/src/gestionnaireR\303\251seau/stepDefinitions/gestionnaireR\303\251seau.given.ts" index c01c1d4a85..39904db46e 100644 --- "a/packages/specifications/src/gestionnaireR\303\251seau/stepDefinitions/gestionnaireR\303\251seau.given.ts" +++ "b/packages/specifications/src/gestionnaireR\303\251seau/stepDefinitions/gestionnaireR\303\251seau.given.ts" @@ -1,9 +1,11 @@ import { DataTable, Given as EtantDonné } from '@cucumber/cucumber'; import { mediator } from 'mediateur'; +import { faker } from '@faker-js/faker'; import { GestionnaireRéseau } from '@potentiel-domain/reseau'; import { PotentielWorld } from '../../potentiel.world'; +import { fakeLocations } from '../../helpers/getFakeLocation'; EtantDonné('un gestionnaire de réseau', async function (this: PotentielWorld, table: DataTable) { const exemple = table.rowsHash(); @@ -62,3 +64,19 @@ EtantDonné( }); }, ); + +// Ce step assigne de manière aléatoire chacun des gestionnaires réseau +// présent dans les fixtures à une (ou plusieurs) ville(s), imitant ainsi le référentiel ORE +EtantDonné('le référentiel ORE', async function (this: PotentielWorld) { + for (const city of fakeLocations) { + const { codeEIC, raisonSociale } = faker.helpers.arrayElement([ + ...this.gestionnaireRéseauWorld.gestionnairesRéseauFixtures.values(), + ]); + this.gestionnaireRéseauWorld.référentielOREFixtures.push({ + codeEIC, + raisonSociale, + codePostal: city.codePostal, + commune: city.commune, + }); + } +}); diff --git a/packages/specifications/src/helpers/getFakeLocation.ts b/packages/specifications/src/helpers/getFakeLocation.ts new file mode 100644 index 0000000000..6dfa9d7280 --- /dev/null +++ b/packages/specifications/src/helpers/getFakeLocation.ts @@ -0,0 +1,13 @@ +import { faker } from '@faker-js/faker'; + +export const fakeLocations = faker.helpers.multiple( + () => ({ + codePostal: faker.location.zipCode(), + commune: faker.location.city(), + région: faker.location.state(), + département: faker.location.state(), + }), + { count: 10 }, +); + +export const getFakeLocation = () => faker.helpers.arrayElement(fakeLocations); diff --git "a/packages/specifications/src/projet/laur\303\251at/repr\303\251sentant-l\303\251gal/changement/demanderChangementRepr\303\251sentantL\303\251gal.feature" "b/packages/specifications/src/projet/laur\303\251at/repr\303\251sentant-l\303\251gal/changement/demanderChangementRepr\303\251sentantL\303\251gal.feature" index 6983e2f83a..2cf56cd002 100644 --- "a/packages/specifications/src/projet/laur\303\251at/repr\303\251sentant-l\303\251gal/changement/demanderChangementRepr\303\251sentantL\303\251gal.feature" +++ "b/packages/specifications/src/projet/laur\303\251at/repr\303\251sentant-l\303\251gal/changement/demanderChangementRepr\303\251sentantL\303\251gal.feature" @@ -45,16 +45,15 @@ Fonctionnalité: Demander le changement de représentant légal d'un projet laur @NotImplemented Scénario: Impossible de demander le changement de représentant légal si le projet est déjà en service Etant donné le gestionnaire de réseau "Enedis" - Et le gestionnaire de réseau "Enedis" attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Et une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Et une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" + Et une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat Quand le porteur demande le changement de réprésentant pour le projet lauréat Alors le porteur devrait être informé que "Impossible de demander le changement de représentant légal pour un projet déjà en service" diff --git "a/packages/specifications/src/projet/laur\303\251at/stepDefinitions/laur\303\251at.given.ts" "b/packages/specifications/src/projet/laur\303\251at/stepDefinitions/laur\303\251at.given.ts" index a161bfca91..941fd34243 100644 --- "a/packages/specifications/src/projet/laur\303\251at/stepDefinitions/laur\303\251at.given.ts" +++ "b/packages/specifications/src/projet/laur\303\251at/stepDefinitions/laur\303\251at.given.ts" @@ -9,6 +9,7 @@ import { Lauréat } from '@potentiel-domain/laureat'; import { PotentielWorld } from '../../../potentiel.world'; import { importerCandidature } from '../../../candidature/stepDefinitions/candidature.given'; +import { waitForEvents } from '../../../helpers/waitForEvents'; EtantDonné('le projet lauréat {string}', async function (this: PotentielWorld, nomProjet: string) { await importerCandidature.call(this, nomProjet, 'classé'); @@ -83,6 +84,7 @@ EtantDonné( ); export async function notifierLauréat(this: PotentielWorld, dateDésignation: string) { + await waitForEvents(); const candidature = this.candidatureWorld.importerCandidature; const identifiantProjetValue = IdentifiantProjet.convertirEnValueType( candidature.identifiantProjet, diff --git "a/packages/specifications/src/raccordement/attribuerGestionnaireR\303\251seau.feature" "b/packages/specifications/src/raccordement/attribuerGestionnaireR\303\251seau.feature" index ea7a0a44a5..b46ec3df7b 100644 --- "a/packages/specifications/src/raccordement/attribuerGestionnaireR\303\251seau.feature" +++ "b/packages/specifications/src/raccordement/attribuerGestionnaireR\303\251seau.feature" @@ -3,36 +3,19 @@ Fonctionnalité: Attribuer un gestionnaire de réseau au raccordement d'un proje Contexte: Etant donné le gestionnaire de réseau "EDF Corse" - Et le projet lauréat "Du boulodrome de Marseille" + Et le gestionnaire de réseau "Arc Energies Maurienne" + Et le gestionnaire de réseau "Enedis" + Et le référentiel ORE - Scénario: Un gestionnaire de réseau est attribué au raccordement d'un projet lauréat - Quand le gestionnaire de réseau "EDF Corse" est attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Alors le projet "Du boulodrome de Marseille" devrait avoir un raccordement attribué au gestionnaire de réseau "EDF Corse" + Scénario: Un gestionnaire de réseau est automatiquement attribué au raccordement d'un projet lauréat + Etant donné la candidature lauréate "Du boulodrome de Marseille" + Quand le DGEC validateur notifie la candidature lauréate + Alors le projet devrait avoir un raccordement attribué au gestionnaire de réseau - Scénario: Un gestionnaire de réseau inconnu est attribué au raccordement d'un projet lauréat - Quand le gestionnaire de réseau inconnu est attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Alors le projet "Du boulodrome de Marseille" devrait avoir un raccordement attribué au gestionnaire de réseau inconnu - - Scénario: Impossible d'attribuer un gestionnaire de réseau non référencé - Quand un gestionnaire de réseau non référencé est attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Alors on devrait être informé que "Le gestionnaire de réseau n'est pas référencé" - - Scénario: Impossible d'attribuer un gestionnaire de réseau au raccordement d'un projet lauréat si celui-ci a déjà un raccordement attribué à un gestionnaire - Etant donné le gestionnaire de réseau "Enedis" - Et le gestionnaire de réseau "Enedis" attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Quand le gestionnaire de réseau "EDF Corse" est attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Alors on devrait être informé que "Un raccordement existe déjà pour ce projet" - - # Ce cas ne peut pas être implémenté à date car nous n'avons pas accès à l'aggréagat candidature (projet) - @NotImplemented - Scénario: Impossible d'attribuer un gestionnaire de réseau au raccordement d'un projet éliminé - Etant donné le projet éliminé "MIOS" - Quand le gestionnaire de réseau "EDF Corse" est attribué au raccordement du projet éliminé "MIOS" - Alors on devrait être informé que "Un gestionnaire de réseau ne peut pas être attribué au raccordement d'un projet éliminé" - - # Ce cas ne peut pas être implémenté à date car nous n'avons pas accès à l'aggréagat candidature (projet) - @NotImplemented - Scénario: Impossible d'attribuer un gestionnaire de réseau au raccordement d'un projet abandonné - Etant donné le projet abandonné "MIOS II" - Quand le gestionnaire de réseau "EDF Corse" est attribué au raccordement du projet abandonné "MIOS II" - Alors on devrait être informé que "Un gestionnaire de réseau ne peut pas être attribué au raccordement d'un projet abandonné" + Scénario: Un gestionnaire de réseau inconnu est automatiquement attribué au raccordement d'un projet lauréat si son GRD n'est pas trouvé + Etant donné la candidature lauréate "Boulodrome Sainte Livrade" avec : + | commune | N/A | + | code postal | N/A | + Quand le DGEC validateur notifie la candidature lauréate + Alors le projet devrait avoir un raccordement attribué au gestionnaire de réseau inconnu + Et une tâche indiquant de "mettre à jour le gestionnaire de réseau" est consultable dans la liste des tâches du porteur pour le projet diff --git "a/packages/specifications/src/raccordement/modifierDemandeCompl\303\250teDeRaccordement.feature" "b/packages/specifications/src/raccordement/modifierDemandeCompl\303\250teDeRaccordement.feature" index 0ec3ea4c96..9aa4fe1c0f 100644 --- "a/packages/specifications/src/raccordement/modifierDemandeCompl\303\250teDeRaccordement.feature" +++ "b/packages/specifications/src/raccordement/modifierDemandeCompl\303\250teDeRaccordement.feature" @@ -6,83 +6,83 @@ Fonctionnalité: Modifier une demande complète de raccordement Et le projet lauréat "Du boulodrome de Marseille" Scénario: Un porteur de projet modifie une demande complète de raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat Scénario: Une dreal modifie une demande complète de raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat Scénario: Impossible de modifier une demande complète de raccordement pour un projet sans dossier de raccordement - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | - Alors le porteur devrait être informé que "Raccordement inconnu" + Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de modifier une demande complète de raccordement pour un dossier n'étant pas référencé dans le raccordement du projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-29 | Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de modifier une demande complète de raccordement avec une date de qualification dans le futur - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau avec : | La date de qualification | 2999-12-31 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | Alors le porteur devrait être informé que "La date ne peut pas être une date future" Scénario: Impossible pour un porteur de modifier une demande complète de raccordement si le projet est déjà en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau "Enedis" avec : + Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | Alors le porteur devrait être informé que "La demande complète de raccordement du dossier OUE-RP-2022-000033 ne peut pas être modifiée car celui-ci dispose déjà d'une date de mise en service" Scénario: Impossible pour une dreal de modifier une demande complète de raccordement si le projet est déjà en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau "Enedis" avec : + Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-29 | diff --git "a/packages/specifications/src/raccordement/modifierGestionnaireR\303\251seauRaccordement.feature" "b/packages/specifications/src/raccordement/modifierGestionnaireR\303\251seauRaccordement.feature" index 572bad88ca..046795cd4c 100644 --- "a/packages/specifications/src/raccordement/modifierGestionnaireR\303\251seauRaccordement.feature" +++ "b/packages/specifications/src/raccordement/modifierGestionnaireR\303\251seauRaccordement.feature" @@ -3,67 +3,83 @@ Fonctionnalité: Modifier le gestionnaire de réseau d'un raccordement Contexte: Etant donné le gestionnaire de réseau "Enedis" - Et le gestionnaire de réseau "Arc Energies Maurienne" + Et le référentiel ORE Et le projet lauréat "Du boulodrome de Marseille" + Et le gestionnaire de réseau "Arc Energies Maurienne" + Et le porteur "Marcel Patoulatchi" ayant accés au projet lauréat "Du boulodrome de Marseille" Scénario: Un porteur de projet modifie le gestionnaire de réseau d'un raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand un porteur modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec le gestionnaire "Arc Energies Maurienne" - Alors le projet "Du boulodrome de Marseille" devrait avoir un raccordement attribué au gestionnaire de réseau "Arc Energies Maurienne" + Quand un porteur modifie le gestionnaire de réseau du projet avec le gestionnaire "Arc Energies Maurienne" + Alors le projet devrait avoir un raccordement attribué au gestionnaire de réseau "Arc Energies Maurienne" Scénario: Un porteur de projet modifie le gestionnaire de réseau d'un raccordement avec un gestionnaire non référencé - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand un porteur modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec un gestionnaire non référencé + Quand un porteur modifie le gestionnaire de réseau du projet avec un gestionnaire non référencé Alors le porteur devrait être informé que "Le gestionnaire de réseau n'est pas référencé" Scénario: Le système modifie le gestionnaire de réseau d'un raccordement avec un gestionnaire inconnu - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le système modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec un gestionnaire inconnu - Alors le projet "Du boulodrome de Marseille" devrait avoir un raccordement attribué au gestionnaire de réseau inconnu + Quand le système modifie le gestionnaire de réseau du projet avec un gestionnaire inconnu + Alors le projet devrait avoir un raccordement attribué au gestionnaire de réseau inconnu - Scénario: Un porteur de projet peut transmettre une demande compléte de raccordemnent pour son nouveau gestionnaire de projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Scénario: Un porteur de projet peut transmettre une demande complète de raccordemnent pour son nouveau gestionnaire de projet + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand un porteur modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec le gestionnaire "Arc Energies Maurienne" - Et le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Arc Energies Maurienne" avec : + Quand un porteur modifie le gestionnaire de réseau du projet avec le gestionnaire "Arc Energies Maurienne" + Et le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000034 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-28 | - Alors le projet lauréat "Du boulodrome de Marseille" devrait avoir 2 dossiers de raccordement pour le gestionnaire de réseau "Arc Energies Maurienne" - Et le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" + Alors le projet lauréat devrait avoir 2 dossiers de raccordement pour le gestionnaire de réseau "Arc Energies Maurienne" + Et le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat Scénario: Impossible pour un porteur de projet de modifier le gestionnaire de réseau d'un raccordement avec mise en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand un porteur modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec le gestionnaire "Arc Energies Maurienne" + Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand un porteur modifie le gestionnaire de réseau du projet avec le gestionnaire "Arc Energies Maurienne" Alors le porteur devrait être informé que "Le gestionnaire de réseau ne peut être modifié car le raccordement a une date de mise en service" Scénario: Impossible pour une dreal de modifier le gestionnaire de réseau d'un raccordement avec mise en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand une dreal modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec le gestionnaire "Arc Energies Maurienne" + Et une date de mise en service "2023-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand une dreal modifie le gestionnaire de réseau du projet avec le gestionnaire "Arc Energies Maurienne" Alors la dreal devrait être informé que "Le gestionnaire de réseau ne peut être modifié car le raccordement a une date de mise en service" + + Scénario: Une tâche est ajoutée lorsqu'un raccordement est modifié avec un gestionnaire réseau inconnu + Et une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : + | La date de qualification | 2022-10-28 | + | La référence du dossier de raccordement | OUE-RP-2022-000033 | + | Le format de l'accusé de réception | application/pdf | + | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | + Quand le système modifie le gestionnaire de réseau du projet avec un gestionnaire inconnu + Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" est consultable dans la liste des tâches du porteur pour le projet + + Scénario: Une tâche est achevée lorsqu'un raccordement est modifié avec un gestionnaire réseau valide + Etant donné une tâche indiquant de "mettre à jour le gestionnaire de réseau" pour le projet lauréat avec gestionnaire inconnu + Quand un porteur modifie le gestionnaire de réseau du projet avec le gestionnaire "Enedis" + Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" n'est plus consultable dans la liste des tâches du porteur pour le projet diff --git "a/packages/specifications/src/raccordement/modifierPropositionTechniqueEtFinanci\303\250re.feature" "b/packages/specifications/src/raccordement/modifierPropositionTechniqueEtFinanci\303\250re.feature" index 65d54b0d5f..2a9fd7d93c 100644 --- "a/packages/specifications/src/raccordement/modifierPropositionTechniqueEtFinanci\303\250re.feature" +++ "b/packages/specifications/src/raccordement/modifierPropositionTechniqueEtFinanci\303\250re.feature" @@ -6,52 +6,52 @@ Fonctionnalité: Modifier une proposition technique et financière Et le projet lauréat "Du boulodrome de Marseille" Scénario: Un porteur de projet modifie une proposition technique et financière - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec : + Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" avec : | La date de signature | 2023-02-12 | | Le format de la proposition technique et financière | text/plain | | Le contenu de proposition technique et financière | Une autre proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-02-12 | - Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" + Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Scénario: Impossible de modifier une proposition technique et financière pour un projet sans dossier de raccordement - Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec : + Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" avec : | La date de signature | 2023-02-12 | | Le format de la proposition technique et financière | text/plain | | Le contenu de proposition technique et financière | Une autre proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-02-12 | - Alors le porteur devrait être informé que "Raccordement inconnu" + Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de modifier une proposition technique et financière pour un dossier n'étant pas référencé dans le raccordement du projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" avec : + Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000034" avec : | La date de signature | 2023-02-12 | | Le format de la proposition technique et financière | text/plain | | Le contenu de proposition technique et financière | Une autre proposition technique et financière pour la référence OUE-RP-2022-000034 avec une date de signature au 2023-02-12 | Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de modifier une proposition technique et financière avec une date de signature dans le futur - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec : + Quand le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" avec : | La date de signature | 2999-12-31 | | Le format de la proposition technique et financière | text/plain | | Le contenu de proposition technique et financière | Une autre proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-02-12 | diff --git "a/packages/specifications/src/raccordement/modifierR\303\251f\303\251renceDemandeCompl\303\250teDeRaccordement.feature" "b/packages/specifications/src/raccordement/modifierR\303\251f\303\251renceDemandeCompl\303\250teDeRaccordement.feature" index 2ae770726c..193703d149 100644 --- "a/packages/specifications/src/raccordement/modifierR\303\251f\303\251renceDemandeCompl\303\250teDeRaccordement.feature" +++ "b/packages/specifications/src/raccordement/modifierR\303\251f\303\251renceDemandeCompl\303\250teDeRaccordement.feature" @@ -6,14 +6,14 @@ Fonctionnalité: Modifier la référence d'une demande complète de raccordement Et le projet lauréat "Du boulodrome de Marseille" Plan du Scénario: Modifier la référence d'une demande complète de raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "" avec la référence "OUE-RP-2022-000034" - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "" avec la référence "OUE-RP-2022-000034" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat Exemples: | Référence actuelle | @@ -24,15 +24,15 @@ Fonctionnalité: Modifier la référence d'une demande complète de raccordement | OUE-RP-2022-000033 | Plan du Scénario: Modifier en tant qu'administrateur la référence d'une demande complète de raccordement pour un dossier ayant déjà une date de mise en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence et la date de qualification au 2022-10-28 | - Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand l'utilisateur avec le rôle "admin" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "" avec la référence "OUE-RP-2022-000034" - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" + Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "" du raccordement pour le projet lauréat + Quand l'utilisateur avec le rôle "admin" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "" avec la référence "OUE-RP-2022-000034" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat Exemples: | Référence actuelle | @@ -43,18 +43,18 @@ Fonctionnalité: Modifier la référence d'une demande complète de raccordement | OUE-RP-2022-000033 | Plan du Scénario: Modifier un dossier de raccordement suite à la modification de la référence - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "" avec la référence "OUE-RP-2022-000034" - Et l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau "Enedis" avec : + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "" avec la référence "OUE-RP-2022-000034" + Et l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000034" auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-29 | | Le format de l'accusé de réception | text/plain | | Le contenu de l'accusé de réception | Une autre accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-29 | - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat Exemples: | Référence actuelle | @@ -65,17 +65,17 @@ Fonctionnalité: Modifier la référence d'une demande complète de raccordement | OUE-RP-2022-000033 | Plan du Scénario: Modifier la référence d'une demande complète de raccordement ayant une PTF - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence et la date de qualification au 2022-10-28 | - Et une proposition technique et financière pour le dossier ayant comme référence "" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "" avec la référence "OUE-RP-2022-000034" - Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "" avec la référence "OUE-RP-2022-000034" + Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000034" Exemples: | Référence actuelle | @@ -90,57 +90,58 @@ Fonctionnalité: Modifier la référence d'une demande complète de raccordement | Code EIC | 17X0000009352859 | | Raison sociale | RTE | | Expression régulière | ^[a-zA-Z]{3}$ | - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "RTE" avec : + Et le gestionnaire de réseau "RTE" attribué au raccordement du projet lauréat + Et une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | ABC | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence ABC et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "ABC" avec la référence "UneRéférenceAvecUnFormatInvalide" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "ABC" avec la référence "UneRéférenceAvecUnFormatInvalide" Alors le porteur devrait être informé que "Le format de la référence du dossier de raccordement est invalide" Scénario: Impossible de modifier la référence pour un projet sans dossier de raccordement - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" - Alors le porteur devrait être informé que "Raccordement inconnu" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" + Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de modifier la référence pour un dossier n'étant pas référencé dans le raccordement du projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" avec la référence "OUE-RP-2022-000035" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000034" avec la référence "OUE-RP-2022-000035" Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible pour un porteur de modifier la référence pour un dossier de raccordement ayant déjà une date de mise en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" + Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" Alors le porteur devrait être informé que "La référence du dossier de raccordement OUE-RP-2022-000033 ne peut pas être modifiée car le dossier dispose déjà d'une date de mise en service" Scénario: Impossible pour une dreal de modifier la référence pour un dossier de raccordement ayant déjà une date de mise en service - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" + Et une date de mise en service "2022-10-29" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand l'utilisateur avec le rôle "dreal" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" Alors la dreal devrait être informé que "La référence du dossier de raccordement OUE-RP-2022-000033 ne peut pas être modifiée car le dossier dispose déjà d'une date de mise en service" Scénario: Impossible de modifier la référence pour un dossier si un autre dossier du même projet a déjà cette référence - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000034 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" + Quand l'utilisateur avec le rôle "porteur-projet" modifie la demande complète de raccordement pour le projet lauréat ayant pour référence "OUE-RP-2022-000033" avec la référence "OUE-RP-2022-000034" Alors le porteur devrait être informé que "Il est impossible d'avoir plusieurs dossiers de raccordement avec la même référence pour un projet" diff --git a/packages/specifications/src/raccordement/stepDefinitions/raccordement.given.ts b/packages/specifications/src/raccordement/stepDefinitions/raccordement.given.ts index 77057ce78a..900f7f6469 100644 --- a/packages/specifications/src/raccordement/stepDefinitions/raccordement.given.ts +++ b/packages/specifications/src/raccordement/stepDefinitions/raccordement.given.ts @@ -4,31 +4,59 @@ import waitForExpect from 'wait-for-expect'; import { expect } from 'chai'; import { DateTime } from '@potentiel-domain/common'; -import { Raccordement } from '@potentiel-domain/reseau'; +import { GestionnaireRéseau, Raccordement } from '@potentiel-domain/reseau'; import { ListerTâchesQuery } from '@potentiel-domain/tache'; import { convertStringToReadableStream } from '../../helpers/convertStringToReadable'; import { PotentielWorld } from '../../potentiel.world'; import { RechercherTypeTâche } from '../../tâche/tâche.world'; +import { waitForEvents } from '../../helpers/waitForEvents'; EtantDonné( - 'une demande complète de raccordement pour le projet lauréat {string} transmise auprès du gestionnaire de réseau {string} avec :', - async function ( - this: PotentielWorld, - nomProjet: string, - raisonSocialeGestionnaireRéseau: string, - table: DataTable, - ) { + 'le gestionnaire de réseau {string} attribué au raccordement du projet lauréat', + async function (this: PotentielWorld, raisonSocialeGestionnaireRéseau: string) { + await waitForEvents(); + const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( + raisonSocialeGestionnaireRéseau, + ); + await mediator.send({ + type: 'Réseau.Raccordement.UseCase.ModifierGestionnaireRéseauRaccordement', + data: { + identifiantGestionnaireRéseauValue: codeEIC, + identifiantProjetValue: this.lauréatWorld.identifiantProjet.formatter(), + rôleValue: this.utilisateurWorld.adminFixture.role, + }, + }); + }, +); + +EtantDonné( + 'le gestionnaire de réseau inconnu attribué au raccordement du projet lauréat', + async function (this: PotentielWorld) { + await waitForEvents(); + + await mediator.send({ + type: 'Réseau.Raccordement.UseCase.ModifierGestionnaireRéseauRaccordement', + data: { + identifiantGestionnaireRéseauValue: + GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu.formatter(), + identifiantProjetValue: this.lauréatWorld.identifiantProjet.formatter(), + rôleValue: this.utilisateurWorld.adminFixture.role, + }, + }); + }, +); + +EtantDonné( + 'une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec :', + async function (this: PotentielWorld, table: DataTable) { const exemple = table.rowsHash(); const dateQualification = new Date(exemple['La date de qualification']).toISOString(); const référenceDossierRaccordement = exemple['La référence du dossier de raccordement']; const format = exemple[`Le format de l'accusé de réception`]; const content = exemple[`Le contenu de l'accusé de réception`]; - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); - const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( - raisonSocialeGestionnaireRéseau, - ); + const { identifiantProjet } = this.lauréatWorld; const accuséRéception = { format, @@ -43,11 +71,13 @@ EtantDonné( content, }; + // le raccordement est créé par une saga + await waitForEvents(); + await mediator.send({ type: 'Réseau.Raccordement.UseCase.TransmettreDemandeComplèteRaccordement', data: { identifiantProjetValue: identifiantProjet.formatter(), - identifiantGestionnaireRéseauValue: codeEIC, référenceDossierValue: référenceDossierRaccordement, dateQualificationValue: dateQualification, accuséRéceptionValue: accuséRéception, @@ -57,19 +87,14 @@ EtantDonné( ); EtantDonné( - 'une proposition technique et financière pour le dossier ayant comme référence {string} du raccordement pour le projet lauréat {string} avec :', - async function ( - this: PotentielWorld, - référenceDossier: string, - nomProjet: string, - table: DataTable, - ) { + 'une proposition technique et financière pour le dossier ayant comme référence {string} du raccordement pour le projet lauréat avec :', + async function (this: PotentielWorld, référenceDossier: string, table: DataTable) { const exemple = table.rowsHash(); const dateSignature = new Date(exemple['La date de signature']).toISOString(); const format = exemple[`Le format de la proposition technique et financière`]; const content = exemple[`Le contenu de proposition technique et financière`]; - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; this.raccordementWorld.dateSignature = DateTime.convertirEnValueType(dateSignature); this.raccordementWorld.propositionTechniqueEtFinancièreSignée = { @@ -95,16 +120,11 @@ EtantDonné( ); EtantDonné( - 'une date de mise en service {string} pour le dossier ayant comme référence {string} du raccordement pour le projet lauréat {string}', - async function ( - this: PotentielWorld, - dateMiseEnService: string, - référenceDossier: string, - nomProjet: string, - ) { + 'une date de mise en service {string} pour le dossier ayant comme référence {string} du raccordement pour le projet lauréat', + async function (this: PotentielWorld, dateMiseEnService: string, référenceDossier: string) { const dateMiseEnServiceValueType = new Date(dateMiseEnService).toISOString(); - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; this.raccordementWorld.dateMiseEnService = DateTime.convertirEnValueType( dateMiseEnServiceValueType, @@ -130,43 +150,20 @@ EtantDonné( ); EtantDonné( - 'le gestionnaire de réseau {string} attribué au raccordement du projet lauréat {string}', - async function ( - this: PotentielWorld, - raisonSocialeGestionnaireRéseau: string, - nomProjet: string, - ) { - const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( - raisonSocialeGestionnaireRéseau, - ); - await attribuerGestionnaireRéseau.call(this, nomProjet, codeEIC); - }, -); - -EtantDonné( - 'le gestionnaire de réseau inconnu attribué au raccordement du projet lauréat {string}', - async function (this: PotentielWorld, nomProjet: string) { - await attribuerGestionnaireRéseau.call(this, nomProjet, 'inconnu'); - }, -); - -EtantDonné( - 'une tâche indiquant de {string} pour le projet lauréat {string} avec gestionnaire inconnu', - async function (this: PotentielWorld, tâche: RechercherTypeTâche, nomProjet: string) { + 'une tâche indiquant de {string} pour le projet lauréat avec gestionnaire inconnu', + async function (this: PotentielWorld, tâche: RechercherTypeTâche) { const actualTypeTâche = this.tâcheWorld.rechercherTypeTâche(tâche); - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; - try { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseauValue: 'inconnu', - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - } catch (e) { - this.error = e as Error; - } + await waitForEvents(); + await mediator.send({ + type: 'Réseau.Raccordement.UseCase.ModifierGestionnaireRéseauRaccordement', + data: { + identifiantGestionnaireRéseauValue: 'inconnu', + identifiantProjetValue: identifiantProjet.formatter(), + rôleValue: this.utilisateurWorld.porteurFixture.role, + }, + }); await waitForExpect(async () => { const tâches = await mediator.send({ @@ -181,19 +178,3 @@ EtantDonné( }); }, ); - -async function attribuerGestionnaireRéseau( - this: PotentielWorld, - nomProjet: string, - codeEIC: string, -) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); - - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantProjetValue: identifiantProjet.formatter(), - identifiantGestionnaireRéseauValue: codeEIC, - }, - }); -} diff --git a/packages/specifications/src/raccordement/stepDefinitions/raccordement.then.ts b/packages/specifications/src/raccordement/stepDefinitions/raccordement.then.ts index 64ef533871..da73a0a276 100644 --- a/packages/specifications/src/raccordement/stepDefinitions/raccordement.then.ts +++ b/packages/specifications/src/raccordement/stepDefinitions/raccordement.then.ts @@ -1,20 +1,21 @@ import { Then as Alors } from '@cucumber/cucumber'; import { mediator } from 'mediateur'; import waitForExpect from 'wait-for-expect'; -import { expect } from 'chai'; +import { assert, expect } from 'chai'; import { Raccordement, GestionnaireRéseau } from '@potentiel-domain/reseau'; import { ConsulterDocumentProjetQuery } from '@potentiel-domain/document'; import { Option } from '@potentiel-libraries/monads'; -import { DateTime } from '@potentiel-domain/common'; +import { DateTime, IdentifiantProjet } from '@potentiel-domain/common'; import { convertReadableStreamToString } from '../../helpers/convertReadableToString'; import { PotentielWorld } from '../../potentiel.world'; +import { waitForEvents } from '../../helpers/waitForEvents'; Alors( - `le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat {string}`, - async function (this: PotentielWorld, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat`, + async function (this: PotentielWorld) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const actual = await mediator.send({ type: 'Réseau.Raccordement.Query.ConsulterRaccordement', @@ -35,9 +36,9 @@ Alors( ); Alors( - `la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat {string}`, - async function (this: PotentielWorld, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat`, + async function (this: PotentielWorld) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const dossierRaccordement = await mediator.send({ @@ -86,66 +87,54 @@ Alors( ); Alors( - `le projet {string} devrait avoir un raccordement attribué au gestionnaire de réseau {string}`, - async function (this: PotentielWorld, nomProjet: string, raisonSociale: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le projet devrait avoir un raccordement attribué au gestionnaire de réseau {string}`, + async function (this: PotentielWorld, raisonSociale: string) { + const { identifiantProjet } = this.lauréatWorld; const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture(raisonSociale); - // Assert on read model - const résultat = await mediator.send({ - type: 'Réseau.Raccordement.Query.ConsulterRaccordement', - data: { - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - - if (Option.isNone(résultat)) { - throw new Error('Raccordement inconnu'); - } - - expect( - résultat.identifiantGestionnaireRéseau?.estÉgaleÀ( - GestionnaireRéseau.IdentifiantGestionnaireRéseau.convertirEnValueType(codeEIC), - ), - ).to.be.true; + await vérifierGestionnaireAttribué.call( + this, + identifiantProjet, + GestionnaireRéseau.IdentifiantGestionnaireRéseau.convertirEnValueType(codeEIC), + ); }, ); Alors( - `le projet {string} devrait avoir un raccordement attribué au gestionnaire de réseau inconnu`, - async function (this: PotentielWorld, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); - - // Assert on read model - const résultat = await mediator.send({ - type: 'Réseau.Raccordement.Query.ConsulterRaccordement', - data: { - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - - if (Option.isNone(résultat)) { - throw new Error('Raccordement inconnu'); - } + `le projet devrait avoir un raccordement attribué au gestionnaire de réseau`, + async function (this: PotentielWorld) { + const identifiantProjet = this.lauréatWorld.identifiantProjet; + + const { commune, codePostal } = this.candidatureWorld.importerCandidature.values.localitéValue; + const codeEIC = + this.gestionnaireRéseauWorld.rechercherOREParVille({ commune, codePostal })?.codeEIC ?? ''; + + await vérifierGestionnaireAttribué.call( + this, + identifiantProjet, + GestionnaireRéseau.IdentifiantGestionnaireRéseau.convertirEnValueType(codeEIC), + ); + }, +); - expect( - résultat.identifiantGestionnaireRéseau?.estÉgaleÀ( - GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu, - ), - ).to.be.true; +Alors( + `le projet devrait avoir un raccordement attribué au gestionnaire de réseau inconnu`, + async function (this: PotentielWorld) { + const { identifiantProjet } = this.lauréatWorld; + + await vérifierGestionnaireAttribué.call( + this, + identifiantProjet, + GestionnaireRéseau.IdentifiantGestionnaireRéseau.inconnu, + ); }, ); Alors( - 'le projet lauréat {string} devrait avoir {int} dossiers de raccordement pour le gestionnaire de réseau {string}', - async function ( - this: PotentielWorld, - nomProjet: string, - nombreDeDemandes: number, - _raisonSociale: string, - ) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + 'le projet lauréat devrait avoir {int} dossiers de raccordement pour le gestionnaire de réseau {string}', + async function (this: PotentielWorld, nombreDeDemandes: number, _raisonSociale: string) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const actual = await mediator.send({ @@ -165,14 +154,14 @@ Alors( ); Alors( - `la date de mise en service {string} devrait être consultable dans le dossier de raccordement du le projet lauréat {string} ayant pour référence {string}`, + `la date de mise en service {string} devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence {string}`, async function ( this: PotentielWorld, dateMiseEnService: string, - nomProjet: string, référenceDossierRaccordement: string, ) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; + await waitForEvents(); await waitForExpect(async () => { const actual = await mediator.send({ type: 'Réseau.Raccordement.Query.ConsulterDossierRaccordement', @@ -200,9 +189,9 @@ Alors( ); Alors( - `la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat {string} ayant pour référence {string}`, - async function (this: PotentielWorld, nomProjet: string, référenceDossierRaccordement: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence {string}`, + async function (this: PotentielWorld, référenceDossierRaccordement: string) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const dossierRaccordement = await mediator.send({ @@ -246,9 +235,9 @@ Alors( ); Alors( - `le dossier ayant pour référence {string} ne devrait plus être consultable dans la liste des dossiers du raccordement pour le projet {string}`, - async function (this: PotentielWorld, référenceDossier: string, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le dossier ayant pour référence {string} ne devrait plus être consultable dans la liste des dossiers du raccordement pour le projet`, + async function (this: PotentielWorld, référenceDossier: string) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const raccordementDuProjet = await mediator.send({ type: 'Réseau.Raccordement.Query.ConsulterRaccordement', @@ -282,9 +271,9 @@ Alors( ); Alors( - `le dossier ayant comme référence {string} ne devrait plus être consultable dans le raccordement du projet lauréat {string}`, - async function (this: PotentielWorld, référenceDossier: string, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le dossier ayant comme référence {string} ne devrait plus être consultable dans le raccordement du projet lauréat`, + async function (this: PotentielWorld, référenceDossier: string) { + const { identifiantProjet } = this.lauréatWorld; await waitForExpect(async () => { const raccordement = await mediator.send({ type: 'Réseau.Raccordement.Query.ConsulterRaccordement', @@ -308,3 +297,25 @@ Alors( }); }, ); + +async function vérifierGestionnaireAttribué( + this: PotentielWorld, + identifiantProjet: IdentifiantProjet.ValueType, + identifiantGestionnaireRéseau: GestionnaireRéseau.IdentifiantGestionnaireRéseau.ValueType, +) { + await waitForExpect(async () => { + // Assert on read model + const résultat = await mediator.send({ + type: 'Réseau.Raccordement.Query.ConsulterRaccordement', + data: { + identifiantProjetValue: identifiantProjet.formatter(), + }, + }); + + assert(Option.isSome(résultat)); + + expect(résultat.identifiantGestionnaireRéseau?.codeEIC).to.eq( + identifiantGestionnaireRéseau?.codeEIC, + ); + }); +} diff --git a/packages/specifications/src/raccordement/stepDefinitions/raccordement.when.ts b/packages/specifications/src/raccordement/stepDefinitions/raccordement.when.ts index 79ddc2640c..c2dd55c23b 100644 --- a/packages/specifications/src/raccordement/stepDefinitions/raccordement.when.ts +++ b/packages/specifications/src/raccordement/stepDefinitions/raccordement.when.ts @@ -9,14 +9,8 @@ import { convertStringToReadableStream } from '../../helpers/convertStringToRead import { PotentielWorld } from '../../potentiel.world'; Quand( - `le porteur transmet une demande complète de raccordement pour le projet {lauréat-éliminé} {string} auprès du gestionnaire de réseau {string} avec :`, - async function ( - this: PotentielWorld, - statutProjet: 'lauréat' | 'éliminé', - nomProjet: string, - raisonSocialeGestionnaire: string, - table: DataTable, - ) { + `le porteur transmet une demande complète de raccordement pour le projet {lauréat-éliminé} auprès du gestionnaire de réseau avec :`, + async function (this: PotentielWorld, statutProjet: 'lauréat' | 'éliminé', table: DataTable) { const exemple = table.rowsHash(); const dateQualification = new Date(exemple['La date de qualification']).toISOString(); const référenceDossierRaccordement = exemple['La référence du dossier de raccordement']; @@ -30,15 +24,8 @@ Quand( const identifiantProjet = statutProjet === 'lauréat' - ? this.lauréatWorld.rechercherLauréatFixture(nomProjet).identifiantProjet.formatter() - : this.eliminéWorld.rechercherÉliminéFixture(nomProjet).identifiantProjet.formatter(); - - const identifiantGestionnaireRéseau = - raisonSocialeGestionnaire === 'Inconnu' - ? 'Code EIC inconnu' - : this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( - raisonSocialeGestionnaire, - ).codeEIC; + ? this.lauréatWorld.identifiantProjet.formatter() + : this.eliminéWorld.identifiantProjet.formatter(); try { this.raccordementWorld.dateQualification = DateTime.convertirEnValueType(dateQualification); @@ -55,7 +42,6 @@ Quand( data: { accuséRéceptionValue: accuséRéception, dateQualificationValue: dateQualification, - identifiantGestionnaireRéseauValue: identifiantGestionnaireRéseau, identifiantProjetValue: identifiantProjet, référenceDossierValue: référenceDossierRaccordement, }, @@ -67,14 +53,13 @@ Quand( ); Quand( - `le gestionnaire de réseau transmet la date de mise en service {string} pour le dossier de raccordement du le projet lauréat {string} ayant pour référence {string}`, + `le gestionnaire de réseau transmet la date de mise en service {string} pour le dossier de raccordement du projet lauréat ayant pour référence {string}`, async function ( this: PotentielWorld, dateMiseEnService: string, - nomProjet: string, référenceDossierRaccordement: string, ) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; this.raccordementWorld.dateMiseEnService = DateTime.convertirEnValueType( new Date(dateMiseEnService).toISOString(), @@ -100,19 +85,14 @@ Quand( ); Quand( - `le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat {string} ayant pour référence {string} avec :`, - async function ( - this: PotentielWorld, - nomProjet: string, - référenceDossierRaccordement: string, - table: DataTable, - ) { + `le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence {string} avec :`, + async function (this: PotentielWorld, référenceDossierRaccordement: string, table: DataTable) { const exemple = table.rowsHash(); const dateSignature = exemple['La date de signature']; const format = exemple[`Le format de la proposition technique et financière`]; const content = exemple[`Le contenu de proposition technique et financière`]; - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; const propositionTechniqueEtFinancièreSignée = { format, @@ -146,13 +126,11 @@ Quand( ); Quand( - `l'utilisateur avec le rôle {string} modifie la demande complète de raccordement pour le projet lauréat {string} ayant pour référence {string} auprès du gestionnaire de réseau {string} avec :`, + `l'utilisateur avec le rôle {string} modifie la demande complète de raccordement pour le projet lauréat ayant pour référence {string} auprès du gestionnaire de réseau avec :`, async function ( this: PotentielWorld, rôleUtilisateur: string, - nomProjet: string, référenceDossierRaccordement: string, - raisonSocialeGestionnaire: string, table: DataTable, ) { const exemple = table.rowsHash(); @@ -160,9 +138,7 @@ Quand( const format = exemple[`Le format de l'accusé de réception`]; const content = exemple[`Le contenu de l'accusé de réception`]; - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); - const { codeEIC } = - this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture(raisonSocialeGestionnaire); + const { identifiantProjet } = this.lauréatWorld; const accuséRéception = { format, @@ -182,7 +158,6 @@ Quand( type: 'Réseau.Raccordement.UseCase.ModifierDemandeComplèteRaccordement', data: { identifiantProjetValue: identifiantProjet.formatter(), - identifiantGestionnaireRéseauValue: codeEIC, référenceDossierRaccordementValue: référenceDossierRaccordement, dateQualificationValue: dateQualification, accuséRéceptionValue: accuséRéception, @@ -196,19 +171,14 @@ Quand( ); Quand( - `le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat {string} ayant pour référence {string} avec :`, - async function ( - this: PotentielWorld, - nomProjet: string, - référenceDossierRaccordement: string, - table: DataTable, - ) { + `le porteur modifie la proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence {string} avec :`, + async function (this: PotentielWorld, référenceDossierRaccordement: string, table: DataTable) { const exemple = table.rowsHash(); const dateSignature = new Date(exemple['La date de signature']).toISOString(); const format = exemple[`Le format de la proposition technique et financière`]; const content = exemple[`Le contenu de proposition technique et financière`]; - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; const propositionTechniqueEtFinancièreSignée = { format, @@ -240,9 +210,9 @@ Quand( ); Quand( - `un porteur modifie le gestionnaire de réseau du projet {string} avec un gestionnaire non référencé`, - async function (this: PotentielWorld, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `un porteur modifie le gestionnaire de réseau du projet avec un gestionnaire non référencé`, + async function (this: PotentielWorld) { + const { identifiantProjet } = this.lauréatWorld; try { await mediator.send({ @@ -260,9 +230,9 @@ Quand( ); Quand( - `le système modifie le gestionnaire de réseau du projet {string} avec un gestionnaire inconnu`, - async function (this: PotentielWorld, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le système modifie le gestionnaire de réseau du projet avec un gestionnaire inconnu`, + async function (this: PotentielWorld) { + const { identifiantProjet } = this.lauréatWorld; try { await mediator.send({ @@ -280,9 +250,9 @@ Quand( ); Quand( - `un porteur modifie le gestionnaire de réseau du projet {string} avec le gestionnaire {string}`, - async function (this: PotentielWorld, nomProjet: string, raisonSocialGestionnaireRéseau: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `un porteur modifie le gestionnaire de réseau du projet avec le gestionnaire {string}`, + async function (this: PotentielWorld, raisonSocialGestionnaireRéseau: string) { + const { identifiantProjet } = this.lauréatWorld; const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( raisonSocialGestionnaireRéseau, ); @@ -303,9 +273,9 @@ Quand( ); Quand( - `une dreal modifie le gestionnaire de réseau du projet {string} avec le gestionnaire {string}`, - async function (this: PotentielWorld, nomProjet: string, raisonSocialGestionnaireRéseau: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `une dreal modifie le gestionnaire de réseau du projet avec le gestionnaire {string}`, + async function (this: PotentielWorld, raisonSocialGestionnaireRéseau: string) { + const { identifiantProjet } = this.lauréatWorld; const { codeEIC } = this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture( raisonSocialGestionnaireRéseau, ); @@ -326,15 +296,14 @@ Quand( ); Quand( - `l'utilisateur avec le rôle {string} modifie la demande complète de raccordement pour le projet lauréat {string} ayant pour référence {string} avec la référence {string}`, + `l'utilisateur avec le rôle {string} modifie la demande complète de raccordement pour le projet lauréat ayant pour référence {string} avec la référence {string}`, async function ( this: PotentielWorld, rôleUtilisateur: string, - nomProjet: string, référenceDossierRaccordementActuelle: string, nouvelleRéférenceDossierRaccordement: string, ) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + const { identifiantProjet } = this.lauréatWorld; try { this.raccordementWorld.référenceDossierRaccordement = @@ -357,83 +326,9 @@ Quand( ); Quand( - `le gestionnaire de réseau {string} est attribué au raccordement du projet {lauréat-éliminé} {string}`, - async function ( - this: PotentielWorld, - nomGestionnaireRéseau: string, - statutProjet: 'lauréat' | 'éliminé', - nomProjet: string, - ) { - const { identifiantProjet } = - statutProjet === 'lauréat' - ? this.lauréatWorld.rechercherLauréatFixture(nomProjet) - : this.eliminéWorld.rechercherÉliminéFixture(nomProjet); - - const { codeEIC } = - this.gestionnaireRéseauWorld.rechercherGestionnaireRéseauFixture(nomGestionnaireRéseau); - - try { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseauValue: codeEIC, - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - } catch (e) { - this.error = e as Error; - } - }, -); - -Quand( - `un gestionnaire de réseau non référencé est attribué au raccordement du projet {lauréat-éliminé} {string}`, - async function (this: PotentielWorld, statutProjet: 'lauréat' | 'éliminé', nomProjet: string) { - const { identifiantProjet } = - statutProjet === 'lauréat' - ? this.lauréatWorld.rechercherLauréatFixture(nomProjet) - : this.eliminéWorld.rechercherÉliminéFixture(nomProjet); - - try { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseauValue: 'GESTIONNAIRE NON RÉFÉRENCÉ', - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - } catch (e) { - this.error = e as Error; - } - }, -); - -Quand( - `le gestionnaire de réseau inconnu est attribué au raccordement du projet {lauréat-éliminé} {string}`, - async function (this: PotentielWorld, statutProjet: 'lauréat' | 'éliminé', nomProjet: string) { - const { identifiantProjet } = - statutProjet === 'lauréat' - ? this.lauréatWorld.rechercherLauréatFixture(nomProjet) - : this.eliminéWorld.rechercherÉliminéFixture(nomProjet); - - try { - await mediator.send({ - type: 'Réseau.Raccordement.UseCase.AttribuerGestionnaireRéseau', - data: { - identifiantGestionnaireRéseauValue: 'inconnu', - identifiantProjetValue: identifiantProjet.formatter(), - }, - }); - } catch (e) { - this.error = e as Error; - } - }, -); - -Quand( - `le porteur supprime le dossier ayant pour référence {string} du raccordement pour le projet lauréat {string}`, - async function (this: PotentielWorld, référenceDossier: string, nomProjet: string) { - const { identifiantProjet } = this.lauréatWorld.rechercherLauréatFixture(nomProjet); + `le porteur supprime le dossier ayant pour référence {string} du raccordement pour le projet lauréat`, + async function (this: PotentielWorld, référenceDossier: string) { + const { identifiantProjet } = this.lauréatWorld; try { await mediator.send({ diff --git a/packages/specifications/src/raccordement/supprimerDossierDuRaccordement.feature b/packages/specifications/src/raccordement/supprimerDossierDuRaccordement.feature index ee7ae9d98a..cf78731fdd 100644 --- a/packages/specifications/src/raccordement/supprimerDossierDuRaccordement.feature +++ b/packages/specifications/src/raccordement/supprimerDossierDuRaccordement.feature @@ -4,25 +4,25 @@ Fonctionnalité: Supprimer un dossier du raccordement d'un projet Contexte: Etant donné le gestionnaire de réseau "Enedis" Et le projet lauréat "Du boulodrome de Marseille" - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Et une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | Scénario: Un porteur supprime un dossier du raccordement d'un projet - Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Alors le dossier ayant pour référence "OUE-RP-2022-000033" ne devrait plus être consultable dans la liste des dossiers du raccordement pour le projet "Du boulodrome de Marseille" + Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Alors le dossier ayant pour référence "OUE-RP-2022-000033" ne devrait plus être consultable dans la liste des dossiers du raccordement pour le projet Scénario: Impossible de supprimer un dossier non référencé dans le raccordement du projet - Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000034" du raccordement pour le projet lauréat "Du boulodrome de Marseille" + Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000034" du raccordement pour le projet lauréat Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de supprimer un dossier ayant déjà une date de mise en service - Etant donné une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" - Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" + Etant donné une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat + Quand le porteur supprime le dossier ayant pour référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat Alors le porteur devrait être informé que "Un dossier avec une date de mise en service ne peut pas être supprimé" diff --git a/packages/specifications/src/raccordement/supprimerRaccordement.feature b/packages/specifications/src/raccordement/supprimerRaccordement.feature index 95c99d9f15..09586c1df6 100644 --- a/packages/specifications/src/raccordement/supprimerRaccordement.feature +++ b/packages/specifications/src/raccordement/supprimerRaccordement.feature @@ -2,30 +2,28 @@ Fonctionnalité: Supprimer le raccordement d'un projet Contexte: - Etant donné le projet lauréat "Du boulodrome de Marseille" + Etant donné le gestionnaire de réseau "Arc Energies Maurienne" + Et le référentiel ORE + Et le projet lauréat "Du boulodrome de Marseille" Et le porteur "Barbara Gordon" ayant accés au projet lauréat "Du boulodrome de Marseille" Scénario: Le système supprime le raccordement d'un projet si celui-ci a un abandon accordé - Etant donné un gestionnaire de réseau - | Code EIC | 17X0000009352859 | - | Raison sociale | Arc Energies Maurienne | - Et le gestionnaire de réseau "Arc Energies Maurienne" attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Arc Energies Maurienne" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | contenu | - Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" avec : + Et une proposition technique et financière pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | contenu | - Et une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat "Du boulodrome de Marseille" + Et une date de mise en service "2024-01-01" pour le dossier ayant comme référence "OUE-RP-2022-000033" du raccordement pour le projet lauréat Et une demande d'abandon en cours pour le projet lauréat Quand le DGEC validateur accorde l'abandon pour le projet lauréat - Alors le dossier ayant comme référence "OUE-RP-2022-000033" ne devrait plus être consultable dans le raccordement du projet lauréat "Du boulodrome de Marseille" + Alors le dossier ayant comme référence "OUE-RP-2022-000033" ne devrait plus être consultable dans le raccordement du projet lauréat Scénario: Le système supprime les tâches de raccordement d'un projet si celui-ci a un abandon accordé - Etant donné le gestionnaire de réseau inconnu attribué au raccordement du projet lauréat "Du boulodrome de Marseille" + Etant donné le gestionnaire de réseau inconnu attribué au raccordement du projet lauréat Et une demande d'abandon en cours pour le projet lauréat Quand le DGEC validateur accorde l'abandon pour le projet lauréat Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" n'est plus consultable dans la liste des tâches du porteur pour le projet diff --git a/packages/specifications/src/raccordement/transmettreDateMiseEnService.feature b/packages/specifications/src/raccordement/transmettreDateMiseEnService.feature index dc060709bc..af514eda0f 100644 --- a/packages/specifications/src/raccordement/transmettreDateMiseEnService.feature +++ b/packages/specifications/src/raccordement/transmettreDateMiseEnService.feature @@ -6,54 +6,54 @@ Fonctionnalité: Transmettre une date de mise en service pour une demande compl Et le projet lauréat "Du boulodrome de Marseille" Scénario: Le gestionnaire de réseau transmet une date de mise en service pour un dossier de raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" - Alors la date de mise en service "2023-03-27" devrait être consultable dans le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" + Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" + Alors la date de mise en service "2023-03-27" devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Scénario: Impossible de transmettre une date de mise en service pour un projet sans dossier de raccordement - Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" - Alors le gestionnaire de réseau devrait être informé que "Raccordement inconnu" + Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" + Alors le gestionnaire de réseau devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de transmettre une date de mise en service pour un dossier n'étant pas référencé dans le raccordement du projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" + Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000034" Alors le gestionnaire de réseau devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de transmettre une date de mise en service dans le futur - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le gestionnaire de réseau transmet la date de mise en service "2999-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" + Quand le gestionnaire de réseau transmet la date de mise en service "2999-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Alors le gestionnaire de réseau devrait être informé que "La date ne peut pas être une date future" Scénario: Impossible de transmettre une date de mise en service antérieure à la date de notification du projet Etant donné le projet lauréat "Du boulodrome de Lille" ayant été notifié le "2022-10-26" - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Lille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Et une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le gestionnaire de réseau transmet la date de mise en service "2021-12-31" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Lille" ayant pour référence "OUE-RP-2022-000033" + Quand le gestionnaire de réseau transmet la date de mise en service "2021-12-31" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Alors le gestionnaire de réseau devrait être informé que "La date de mise en service ne peut pas être antérieure à la date de désignation du projet" Scénario: Impossible de transmettre une date de mise en service plus d'une fois - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" - Et le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du le projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" + Quand le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" + Et le gestionnaire de réseau transmet la date de mise en service "2023-03-27" pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Alors le gestionnaire de réseau devrait être informé que "La date de mise en service est déjà transmise pour ce dossier de raccordement" # Ce cas ne peut pas être implémenté à date car nous n'avons pas accès à l'aggréagat candidature (projet) diff --git "a/packages/specifications/src/raccordement/transmettreDemandeCompl\303\250teDeRaccordement.feature" "b/packages/specifications/src/raccordement/transmettreDemandeCompl\303\250teDeRaccordement.feature" index 1b050b9f51..40f60a3899 100644 --- "a/packages/specifications/src/raccordement/transmettreDemandeCompl\303\250teDeRaccordement.feature" +++ "b/packages/specifications/src/raccordement/transmettreDemandeCompl\303\250teDeRaccordement.feature" @@ -3,75 +3,53 @@ Fonctionnalité: Transmettre une demande complète de raccordement Contexte: Etant donné le gestionnaire de réseau "Enedis" + Et le référentiel ORE Et le projet lauréat "Du boulodrome de Marseille" Et le porteur "Marcel Patoulatchi" ayant accés au projet lauréat "Du boulodrome de Marseille" Scénario: Un porteur de projet transmet une demande complète de raccordement pour son projet - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat "Du boulodrome de Marseille" - Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" - Et le projet "Du boulodrome de Marseille" devrait avoir un raccordement attribué au gestionnaire de réseau "Enedis" + Alors le dossier est consultable dans la liste des dossiers de raccordement du projet lauréat + Et la demande complète de raccordement devrait être consultable dans le dossier de raccordement du projet lauréat + Et le projet devrait avoir un raccordement attribué au gestionnaire de réseau "Enedis" Scénario: Un porteur de projet transmet plusieurs demandes complètes de raccordement pour son projet - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000034 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-28 | - Et le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Et le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000035 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-28 | - Alors le projet lauréat "Du boulodrome de Marseille" devrait avoir 2 dossiers de raccordement pour le gestionnaire de réseau "Enedis" + Alors le projet lauréat devrait avoir 2 dossiers de raccordement pour le gestionnaire de réseau "Enedis" Scénario: Un porteur de projet transmet plusieurs demandes complètes de raccordement ayant la même référence - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | Alors le porteur devrait être informé que "Il est impossible d'avoir plusieurs dossiers de raccordement avec la même référence pour un projet" - Scénario: Impossible de transmettre une demande complète de raccordement auprès d'un autre gestionnaire de réseau - Etant donné un gestionnaire de réseau - | Code EIC | 17X0000009352859 | - | Raison sociale | Arc Energies Maurienne | - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Arc Energies Maurienne" avec : - | La date de qualification | 2022-10-28 | - | La référence du dossier de raccordement | OUE-RP-2022-000033 | - | Le format de l'accusé de réception | application/pdf | - | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : - | La date de qualification | 2022-10-28 | - | La référence du dossier de raccordement | OUE-RP-2022-000034 | - | Le format de l'accusé de réception | application/pdf | - | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-28 | - Alors le porteur devrait être informé que "Il est impossible de transmettre une demande complète de raccordement auprès de plusieurs gestionnaires de réseau" - - Scénario: Impossible de transmettre une demande complète de raccordement auprès d'un gestionnaire de réseau non référencé - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Inconnu" avec : - | La date de qualification | 2022-10-28 | - | La référence du dossier de raccordement | OUE-RP-2022-000034 | - | Le format de l'accusé de réception | application/pdf | - | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000034 et la date de qualification au 2022-10-28 | - Alors le porteur devrait être informé que "Le gestionnaire de réseau n'est pas référencé" - Scénario: Impossible de transmettre une demande complète de raccordement avec une référence ne correspondant pas au format défini par le gestionnaire de réseau Etant donné un gestionnaire de réseau | Code EIC | 17X0000009352859 | | Raison sociale | RTE | | Expression régulière | ^[a-zA-Z]{3}$ | - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "RTE" avec : + Et le gestionnaire de réseau "RTE" attribué au raccordement du projet lauréat + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | UneRéférenceAvecUnFormatInvalide | | Le format de l'accusé de réception | application/pdf | @@ -79,7 +57,7 @@ Fonctionnalité: Transmettre une demande complète de raccordement Alors le porteur devrait être informé que "Le format de la référence du dossier de raccordement est invalide" Scénario: Impossible de transmettre une demande complète de raccordement avec une date de qualification dans le futur - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2999-12-31 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | @@ -88,7 +66,7 @@ Fonctionnalité: Transmettre une demande complète de raccordement Scénario: Impossible de transmettre une demande complète de raccordement si le projet est abandonné Etant donné un abandon accordé pour le projet lauréat - Quand le porteur transmet une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet lauréat auprès du gestionnaire de réseau avec : | La date de qualification | 2022-12-31 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | @@ -97,7 +75,7 @@ Fonctionnalité: Transmettre une demande complète de raccordement Scénario: Impossible de transmettre une demande complète de raccordement si le projet est éliminé Etant donné le projet éliminé "MIOS" - Quand le porteur transmet une demande complète de raccordement pour le projet éliminé "MIOS" auprès du gestionnaire de réseau "Enedis" avec : + Quand le porteur transmet une demande complète de raccordement pour le projet éliminé auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | diff --git "a/packages/specifications/src/raccordement/transmettrePropositionTechniqueEtFinanci\303\250re.feature" "b/packages/specifications/src/raccordement/transmettrePropositionTechniqueEtFinanci\303\250re.feature" index 2e17bef179..f7b115297c 100644 --- "a/packages/specifications/src/raccordement/transmettrePropositionTechniqueEtFinanci\303\250re.feature" +++ "b/packages/specifications/src/raccordement/transmettrePropositionTechniqueEtFinanci\303\250re.feature" @@ -6,43 +6,43 @@ Fonctionnalité: Transmettre une proposition technique et financière Et le projet lauréat "Du boulodrome de Marseille" Scénario: Un porteur de projet transmet une proposition technique et financière pour ce dossier de raccordement - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec : + Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" + Alors la proposition technique et financière signée devrait être consultable dans le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" Scénario: Impossible de transmettre une proposition technique et financière pour un projet sans dossier de raccordement - Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000033" avec : + Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000033" avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | - Alors le porteur devrait être informé que "Raccordement inconnu" + Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de transmettre une proposition technique et financière pour un dossier n'étant pas référencé dans le raccordement du projet - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" avec : + Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000034" avec : | La date de signature | 2023-01-10 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000034 avec une date de signature au 2023-01-10 | Alors le porteur devrait être informé que "Le dossier n'est pas référencé dans le raccordement de ce projet" Scénario: Impossible de transmettre une proposition technique et financière avec une date de signature dans le futur - Etant donné une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : + Etant donné une demande complète de raccordement pour le projet lauréat transmise auprès du gestionnaire de réseau avec : | La date de qualification | 2022-10-28 | | La référence du dossier de raccordement | OUE-RP-2022-000033 | | Le format de l'accusé de réception | application/pdf | | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat "Du boulodrome de Marseille" ayant pour référence "OUE-RP-2022-000034" avec : + Quand le porteur transmet une proposition technique et financière pour le dossier de raccordement du projet lauréat ayant pour référence "OUE-RP-2022-000034" avec : | La date de signature | 2999-12-31 | | Le format de la proposition technique et financière | application/pdf | | Le contenu de proposition technique et financière | Proposition technique et financière pour la référence OUE-RP-2022-000033 avec une date de signature au 2023-01-10 | diff --git a/packages/specifications/src/setup.ts b/packages/specifications/src/setup.ts index e59f82e3f5..14000cbba4 100644 --- a/packages/specifications/src/setup.ts +++ b/packages/specifications/src/setup.ts @@ -25,6 +25,7 @@ import { executeQuery, killPool } from '@potentiel-libraries/pg-helpers'; import { getClient } from '@potentiel-libraries/file-storage'; import { bootstrap } from '@potentiel-applications/bootstrap'; import { EmailPayload } from '@potentiel-applications/notifications'; +import { Option } from '@potentiel-libraries/monads'; import { PotentielWorld } from './potentiel.world'; import { sleep } from './helpers/sleep'; @@ -112,7 +113,13 @@ Before(async function (this: PotentielWorld) { clear(); - unsetup = await bootstrap({ middlewares: [], sendEmail: testEmailAdapter.bind(this) }); + unsetup = await bootstrap({ + middlewares: [], + dependencies: { + sendEmail: testEmailAdapter.bind(this), + récupérerGRDParVille: mockRécupérerGRDParVilleAdapter.bind(this), + }, + }); }); After(async () => { @@ -150,3 +157,10 @@ async function testEmailAdapter( ): Promise> { this.notificationWorld.ajouterNotification(emailPayload); } + +async function mockRécupérerGRDParVilleAdapter( + this: PotentielWorld, + search: { codePostal: string; commune: string }, +) { + return this.gestionnaireRéseauWorld.rechercherOREParVille(search) ?? Option.none; +} diff --git "a/packages/specifications/src/t\303\242che/acheverT\303\242che.feature" "b/packages/specifications/src/t\303\242che/acheverT\303\242che.feature" index d3c01621c5..105183ae45 100644 --- "a/packages/specifications/src/t\303\242che/acheverT\303\242che.feature" +++ "b/packages/specifications/src/t\303\242che/acheverT\303\242che.feature" @@ -32,9 +32,3 @@ Fonctionnalité: Achever une tâche | date mise à jour | 2024-03-01 | | enregistré par | admin@test.test | Alors une tâche indiquant de "transmettre les garanties financières" n'est plus consultable dans la liste des tâches du porteur pour le projet - - Scénario: Une tâche est achevée lorsqu'un raccordement est modifié avec un gestionnaire réseau valide - Etant donné le gestionnaire de réseau "Enedis" - Et une tâche indiquant de "mettre à jour le gestionnaire de réseau" pour le projet lauréat "Du boulodrome de Marseille" avec gestionnaire inconnu - Quand un porteur modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec le gestionnaire "Enedis" - Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" n'est plus consultable dans la liste des tâches du porteur pour le projet diff --git "a/packages/specifications/src/t\303\242che/ajouterT\303\242che.feature" "b/packages/specifications/src/t\303\242che/ajouterT\303\242che.feature" index 239f7be592..5907b8a5d8 100644 --- "a/packages/specifications/src/t\303\242che/ajouterT\303\242che.feature" +++ "b/packages/specifications/src/t\303\242che/ajouterT\303\242che.feature" @@ -1,3 +1,4 @@ +# TODO move to GF # language: fr Fonctionnalité: Ajouter une tâche @@ -11,18 +12,3 @@ Fonctionnalité: Ajouter une tâche | date de notification | 2023-09-01 | | motif | motif-inconnu | Alors une tâche indiquant de "transmettre les garanties financières" est consultable dans la liste des tâches du porteur pour le projet - - Scénario: Une tâche est ajoutée lorsqu'un gestionnaire réseau inconnu est attribué - Etant donné le gestionnaire de réseau "Enedis" - Quand le gestionnaire de réseau inconnu est attribué au raccordement du projet lauréat "Du boulodrome de Marseille" - Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" est consultable dans la liste des tâches du porteur pour le projet - - Scénario: Une tâche est ajoutée lorsqu'un raccordement est modifié avec un gestionnaire réseau inconnu - Etant donné le gestionnaire de réseau "Enedis" - Et une demande complète de raccordement pour le projet lauréat "Du boulodrome de Marseille" transmise auprès du gestionnaire de réseau "Enedis" avec : - | La date de qualification | 2022-10-28 | - | La référence du dossier de raccordement | OUE-RP-2022-000033 | - | Le format de l'accusé de réception | application/pdf | - | Le contenu de l'accusé de réception | Accusé de réception ayant pour référence OUE-RP-2022-000033 et la date de qualification au 2022-10-28 | - Quand le système modifie le gestionnaire de réseau du projet "Du boulodrome de Marseille" avec un gestionnaire inconnu - Alors une tâche indiquant de "mettre à jour le gestionnaire de réseau" est consultable dans la liste des tâches du porteur pour le projet diff --git "a/packages/specifications/src/t\303\242che/stepDefinitions/t\303\242che.then.ts" "b/packages/specifications/src/t\303\242che/stepDefinitions/t\303\242che.then.ts" index 498651927e..a2be6aac88 100644 --- "a/packages/specifications/src/t\303\242che/stepDefinitions/t\303\242che.then.ts" +++ "b/packages/specifications/src/t\303\242che/stepDefinitions/t\303\242che.then.ts" @@ -7,12 +7,14 @@ import { ListerTâchesQuery } from '@potentiel-domain/tache'; import { PotentielWorld } from '../../potentiel.world'; import { RechercherTypeTâche } from '../tâche.world'; +import { waitForEvents } from '../../helpers/waitForEvents'; Alors( `une tâche indiquant de {string} est consultable dans la liste des tâches du porteur pour le projet`, async function (this: PotentielWorld, typeTâche: RechercherTypeTâche) { const actualTypeTâche = this.tâcheWorld.rechercherTypeTâche(typeTâche); + await waitForEvents(); await waitForExpect(async () => { const tâches = await mediator.send({ type: 'Tâche.Query.ListerTâches',