Skip to content

Commit

Permalink
[TESTS][DEVENIR AIDANT] Vérifie l'action HATEOAS de finalisation-crea…
Browse files Browse the repository at this point in the history
…tion-nouvel-espace-aidant après le 31 janvier
  • Loading branch information
firefly33 committed Jan 21, 2025
1 parent 5524a6c commit 7f33b80
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 31 deletions.
7 changes: 3 additions & 4 deletions mon-aide-cyber-api/src/api/hateoas/contextesUtilisateur.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ type ClefContexte =
export type ContextesUtilisateur = {
[clef in ClefContexte]: ContexteGeneral;
};

export const contextesUtilisateur: ContextesUtilisateur = {
export const contextesUtilisateur: () => ContextesUtilisateur = () => ({
'demande-devenir-aidant': {
...finaliseCreationEspaceAidant,
...finaliseCreationEspaceAidant(),
...demandeDevenirAidant,
},
'demande-etre-aide': {
Expand Down Expand Up @@ -120,7 +119,7 @@ export const contextesUtilisateur: ContextesUtilisateur = {
url: '/api/utilisateur/valider-signature-cgu',
},
},
};
});
export type ContexteSpecifique = {
[clef: string]: ContexteSpecifique | Options;
};
Expand Down
18 changes: 5 additions & 13 deletions mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,10 @@
import { ContexteSpecifique } from './contextesUtilisateur';
import { Options } from './hateoas';
import { adaptateurEnvironnement } from '../../adaptateurs/adaptateurEnvironnement';
import { isBefore } from 'date-fns';
import { FournisseurHorloge } from '../../infrastructure/horloge/FournisseurHorloge';
import { estDateNouveauParcoursDemandeDevenirAidant } from '../../gestion-demandes/devenir-aidant/nouveauParcours';

const estNouveauParcoursDevenirAidantActif = isBefore(
FournisseurHorloge.enDate(
adaptateurEnvironnement.nouveauParcoursDevenirAidant()
),
FournisseurHorloge.maintenant()
);

export const finaliseCreationEspaceAidant: ContexteSpecifique = {
export const finaliseCreationEspaceAidant: () => ContexteSpecifique = () => ({
'finalise-creation-espace-aidant': {
...(estNouveauParcoursDevenirAidantActif
...(estDateNouveauParcoursDemandeDevenirAidant()
? {
'finalise-creation-nouvel-espace-aidant': {
url: '/api/demandes/devenir-aidant/creation-espace-aidant',
Expand All @@ -27,7 +18,8 @@ export const finaliseCreationEspaceAidant: ContexteSpecifique = {
},
}),
},
};
});

export const demandeDevenirAidant: ContexteSpecifique & {
'demande-devenir-aidant': {
'envoyer-demande-devenir-aidant': Options;
Expand Down
2 changes: 1 addition & 1 deletion mon-aide-cyber-api/src/api/hateoas/hateoas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class ConstructeurActionsDepuisContexte {

constructor(informationsContexte: InformationsContexte) {
const contextes = informationsContexte.contexte.split(':');
const options = contextesUtilisateur[contextes[0]];
const options = contextesUtilisateur()[contextes[0]];
if (options) {
if (contextes[1]) {
Object.entries(options[contextes[1]]).forEach(
Expand Down
64 changes: 51 additions & 13 deletions mon-aide-cyber-api/test/api/hateoas/hateoas.spec.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,57 @@
import { describe, it } from 'vitest';
import { lesContextesUtilisateursExistants } from './lesContextesUtilisateursExistants';
import { beforeAll, describe, it } from 'vitest';
import {
lesContextesUtilisateursExistants,
lesContextesUtilisateursNouveauParcoursExistants,
} from './lesContextesUtilisateursExistants';
import { constructeurActionsHATEOAS } from '../../../src/api/hateoas/hateoas';
import { InformationsContexte } from '../../../src/adaptateurs/AdaptateurDeVerificationDeSession';
import { adaptateurEnvironnement } from '../../../src/adaptateurs/adaptateurEnvironnement';
import { FournisseurHorlogeDeTest } from '../../infrastructure/horloge/FournisseurHorlogeDeTest';

describe('HATEOAS', () => {
it.each(lesContextesUtilisateursExistants)(
'Retourne les liens correspondant au contexte $contexte',
(contexte) => {
const reponseHATEOAS = constructeurActionsHATEOAS()
.pour(contexte.informationContexte as InformationsContexte)
.construis();
describe('Avant nouveau parcours', () => {
beforeAll(() => {
adaptateurEnvironnement.nouveauParcoursDevenirAidant = () =>
'2025-01-31T08:00:00';
FournisseurHorlogeDeTest.initialise(
new Date(Date.parse('2025-01-14T08:00:00'))
);
});

expect(reponseHATEOAS).toStrictEqual({
liens: { ...contexte.liens },
});
}
);
it.each(lesContextesUtilisateursExistants)(
'Retourne les liens correspondant au contexte $contexte',
(contexte) => {
const reponseHATEOAS = constructeurActionsHATEOAS()
.pour(contexte.informationContexte as InformationsContexte)
.construis();

expect(reponseHATEOAS).toStrictEqual({
liens: { ...contexte.liens },
});
}
);
});

describe('Nouveau parcours', async () => {
beforeEach(async () => {
adaptateurEnvironnement.nouveauParcoursDevenirAidant = () =>
'2025-01-31T08:00:00';
FournisseurHorlogeDeTest.initialise(
new Date(Date.parse('2025-02-02T08:00:00'))
);
});

it.each(lesContextesUtilisateursNouveauParcoursExistants)(
'Retourne les liens correspondant au contexte $contexte',
(contexte) => {
const reponseHATEOAS = constructeurActionsHATEOAS()
.pour(contexte.informationContexte as InformationsContexte)
.construis();

expect(reponseHATEOAS).toStrictEqual({
liens: { ...contexte.liens },
});
}
);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,25 @@ export const lesContextesUtilisateursExistants = [
},
},
];

const contextes = lesContextesUtilisateursExistants.filter(
(x) =>
x.informationContexte.contexte !==
'demande-devenir-aidant:finalise-creation-espace-aidant'
);

export const lesContextesUtilisateursNouveauParcoursExistants = [
...contextes,
{
contexte: 'Demande devenir Aidant - Création de l’espace Aidant',
informationContexte: {
contexte: 'demande-devenir-aidant:finalise-creation-espace-aidant',
},
liens: {
'finalise-creation-nouvel-espace-aidant': {
url: '/api/demandes/devenir-aidant/creation-espace-aidant',
methode: 'POST',
},
},
},
];

0 comments on commit 7f33b80

Please sign in to comment.