Skip to content

Commit

Permalink
Ajoute une méthode au dépôt permettant de lire tous les services pour…
Browse files Browse the repository at this point in the history
… un SIRET
  • Loading branch information
ThibaudMZN committed Nov 7, 2024
1 parent bc86837 commit c13d2e0
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/adaptateurs/adaptateurPersistanceMemoire.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@ const nouvelAdaptateur = (
const ajouteSiretAuSuperviseur = async (idSuperviseur, siret) =>
donnees.superviseurs.push({ idSuperviseur, siretSupervise: siret });

const servicesAvecHashSiret = async (hashSiret) =>
donnees.services.filter((s) => s.siretHash === hashSiret);

return {
activitesMesure,
ajouteActiviteMesure,
Expand Down Expand Up @@ -334,6 +337,7 @@ const nouvelAdaptateur = (
sauvegardeNotificationsExpirationHomologation,
sauvegardeParcoursUtilisateur,
sauvegardeService,
servicesAvecHashSiret,
supprimeAutorisation,
supprimeAutorisations,
supprimeAutorisationsContribution,
Expand Down
10 changes: 10 additions & 0 deletions src/adaptateurs/adaptateurPostgres.js
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,15 @@ const nouvelAdaptateur = (env) => {
siret_supervise: siret,
});

const servicesAvecHashSiret = async (hashSiret) => {
const lignes = await knex('services')
.select({ id: 'id' })
.where({ siret_hash: hashSiret });
const ids = lignes.map(({ id }) => id);

return avecPMapPourChaqueElement(Promise.resolve(ids), service);
};

return {
activitesMesure,
ajouteAutorisation,
Expand Down Expand Up @@ -555,6 +564,7 @@ const nouvelAdaptateur = (env) => {
sauvegardeNotificationsExpirationHomologation,
sauvegardeNouvelIndiceCyber,
sauvegardeParcoursUtilisateur,
servicesAvecHashSiret,
suggestionsActionsService,
supprimeAutorisation,
supprimeAutorisations,
Expand Down
2 changes: 2 additions & 0 deletions src/depotDonnees.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ const creeDepot = (config = {}) => {
supprimeMesureSpecifiqueDuService,
supprimeRisqueSpecifiqueDuService,
tousLesServices,
tousLesServicesAvecSiret,
} = depotServices;

const {
Expand Down Expand Up @@ -240,6 +241,7 @@ const creeDepot = (config = {}) => {
tachesDesServices,
tousUtilisateurs,
tousLesServices,
tousLesServicesAvecSiret,
utilisateur,
utilisateurAFinaliser,
utilisateurAuthentifie,
Expand Down
10 changes: 10 additions & 0 deletions src/depots/depotDonneesServices.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@ const fabriquePersistance = (
if (!s) return undefined;
return enrichisService(s);
},
ceuxAvecSiret: async (siret) => {
const hashSiret = adaptateurChiffrement.hacheSha256(siret);

const donneesServices =
await adaptateurPersistance.servicesAvecHashSiret(hashSiret);
return Promise.all(donneesServices.map((d) => enrichisService(d)));
},
ceuxDeUtilisateur: async (idUtilisateur) => {
const donneesServices =
await adaptateurPersistance.services(idUtilisateur);
Expand Down Expand Up @@ -294,6 +301,8 @@ const creeDepot = (config = {}) => {

const tousLesServices = () => p.lis.tous();

const tousLesServicesAvecSiret = (siret) => p.lis.ceuxAvecSiret(siret);

const enregistreDossier = (idHomologation, dossier) =>
ajouteAItemsDuService('dossiers', idHomologation, dossier);

Expand Down Expand Up @@ -576,6 +585,7 @@ const creeDepot = (config = {}) => {
supprimeRisqueSpecifiqueDuService,
supprimeService,
tousLesServices,
tousLesServicesAvecSiret,
trouveIndexDisponible,
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ class ConstructeurAdaptateurPersistanceMemoire {
nomServiceHash: this.adaptateurChiffrement.hacheSha256(
service.descriptionService.nomService
),
siretHash: this.adaptateurChiffrement.hacheSha256(
service.descriptionService.organisationResponsable.siret
),
});
return this;
}
Expand Down
57 changes: 57 additions & 0 deletions test/depots/depotDonneesServices.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2157,6 +2157,63 @@ describe('Le dépôt de données des services', () => {
});
});

describe('sur demande de tous les services associés à un SIRET', () => {
let depot;
let adaptateurPersistance;
let depotDonneesUtilisateurs;
let referentiel;

beforeEach(() => {
referentiel = creeReferentielVide();
adaptateurPersistance = unePersistanceMemoire()
.ajouteUnUtilisateur(unUtilisateur().avecId('moi').donnees)
.ajouteUnService(
unService(referentiel)
.avecId('S1')
.avecOrganisationResponsable({ siret: 'unSIRET' }).donnees
)
.ajouteUneAutorisation(
uneAutorisation().deProprietaire('moi', 'S1').donnees
)
.construis();
depotDonneesUtilisateurs = DepotDonneesUtilisateurs.creeDepot({
adaptateurPersistance,
adaptateurChiffrement: fauxAdaptateurChiffrement(),
});
depot = DepotDonneesServices.creeDepot({
adaptateurChiffrement: fauxAdaptateurChiffrement(),
adaptateurPersistance,
depotDonneesUtilisateurs,
referentiel,
});
});

it('délègue à la persistance la lecture de ces services', async () => {
let hashSiretRecu;
depot = DepotDonneesServices.creeDepot({
adaptateurChiffrement: {
hacheSha256: (chaine) => `${chaine}-SHA256`,
},
adaptateurPersistance: {
servicesAvecHashSiret: async (hashSiret) => {
hashSiretRecu = hashSiret;
return [];
},
},
});

await depot.tousLesServicesAvecSiret('unSIRET');

expect(hashSiretRecu).to.be('unSIRET-SHA256');
});

it('enrichis les services récupérés', async () => {
const services = await depot.tousLesServicesAvecSiret('unSIRET');

expect(services[0].contributeurs.length).to.be(1);
});
});

describe("sur demande d'ajout de mesure spécifique", () => {
let depot;
let adaptateurPersistance;
Expand Down

0 comments on commit c13d2e0

Please sign in to comment.