Skip to content

Commit

Permalink
Transmets requêteur de l'annuaire à la requête
Browse files Browse the repository at this point in the history
Co-authored-by: Fabien Lamarque <[email protected]>
  • Loading branch information
egaillot and Fabinout committed Sep 12, 2024
1 parent ea8b750 commit 1ae1411
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 8 deletions.
31 changes: 25 additions & 6 deletions src/api/pieceJustificative.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,29 @@ const {
ErreurCodePaysIntrouvable,
ErreurDestinataireInexistant,
ErreurReponseRequete,
ErreurRequeteurInexistant,
ErreurTypeJustificatifIntrouvable,
} = require('../erreurs');

const estErreurAbsenceReponse = (e) => e instanceof ErreurAbsenceReponseDestinataire;
const estErreurReponseRequete = (e) => e instanceof ErreurReponseRequete;
const estErreurMetier = (e) => estErreurAbsenceReponse(e) || estErreurReponseRequete(e);

const paramsRequete = (config, codeDemarche, codePays) => {
const { depotPointsAcces, depotServicesCommuns } = config;
const paramsRequete = (config, codeDemarche, codePays, idRequeteur) => {
const { depotPointsAcces, depotRequeteurs, depotServicesCommuns } = config;

return depotServicesCommuns.trouveTypesJustificatifsPourDemarche(codeDemarche)
.then((tjs) => tjs[0])
.then((tj) => depotServicesCommuns.trouveFournisseurs(tj.id, codePays)
.then((fs) => fs[0])
.then((f) => depotPointsAcces.trouvePointAcces(f.idPointAcces())
.then((pa) => ({ destinataire: pa, fournisseur: f, typeJustificatif: tj }))));
.then((pa) => depotRequeteurs.trouveRequeteur(idRequeteur)
.then((r) => ({
destinataire: pa,
fournisseur: f,
requeteur: r,
typeJustificatif: tj,
})))));
};

const pieceJustificativeRecue = (idConversation, adaptateurDomibus) => adaptateurDomibus
Expand All @@ -36,15 +43,26 @@ const pieceJustificative = (config, requete, reponse) => {
adaptateurUUID,
} = config;
const idConversation = adaptateurUUID.genereUUID();
const { codeDemarche, codePays, previsualisationRequise } = requete.query;
const {
codeDemarche,
codePays,
idRequeteur,
previsualisationRequise,
} = requete.query;

return paramsRequete(config, codeDemarche, codePays)
.then(({ destinataire, fournisseur, typeJustificatif }) => {
return paramsRequete(config, codeDemarche, codePays, idRequeteur)
.then(({
destinataire,
fournisseur,
requeteur,
typeJustificatif,
}) => {
adaptateurDomibus.envoieMessageRequete({
codeDemarche,
destinataire,
fournisseur,
idConversation,
requeteur,
typeJustificatif,
previsualisationRequise: (previsualisationRequise === 'true' || previsualisationRequise === ''),
});
Expand All @@ -66,6 +84,7 @@ const pieceJustificative = (config, requete, reponse) => {
e instanceof ErreurCodeDemarcheIntrouvable
|| e instanceof ErreurCodePaysIntrouvable
|| e instanceof ErreurDestinataireInexistant
|| e instanceof ErreurRequeteurInexistant
|| e instanceof ErreurTypeJustificatifIntrouvable
) {
reponse.status(422).json({ erreur: e.message });
Expand Down
2 changes: 2 additions & 0 deletions src/ootsFrance.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const creeServeur = (config) => {
adaptateurEnvironnement,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
ecouteurDomibus,
horodateur,
Expand All @@ -29,6 +30,7 @@ const creeServeur = (config) => {
adaptateurEnvironnement,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
}));

Expand Down
2 changes: 2 additions & 0 deletions src/routes/routesRequete.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const routesRequete = (config) => {
adaptateurEnvironnement,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
} = config;

Expand All @@ -20,6 +21,7 @@ const routesRequete = (config) => {
adaptateurDomibus,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
},
requete,
Expand Down
48 changes: 46 additions & 2 deletions test/api/pieceJustificative.spec.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
const pieceJustificative = require('../../src/api/pieceJustificative');
const PointAcces = require('../../src/ebms/pointAcces');
const Fournisseur = require('../../src/ebms/fournisseur');
const Requeteur = require('../../src/ebms/requeteur');
const TypeJustificatif = require('../../src/ebms/typeJustificatif');

const {
ErreurAbsenceReponseDestinataire,
ErreurReponseRequete,
ErreurDestinataireInexistant,
ErreurRequeteurInexistant,
ErreurReponseRequete,
} = require('../../src/erreurs');

describe('Le requêteur de pièce justificative', () => {
const adaptateurDomibus = {};
const adaptateurEnvironnement = {};
const adaptateurUUID = {};
const depotPointsAcces = {};
const depotRequeteurs = {};
const depotServicesCommuns = {};

const config = {
adaptateurDomibus,
adaptateurEnvironnement,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
};
const requete = {};
Expand All @@ -32,6 +36,7 @@ describe('Le requêteur de pièce justificative', () => {
adaptateurDomibus.urlRedirectionDepuisReponse = () => Promise.resolve();
adaptateurUUID.genereUUID = () => '';
depotPointsAcces.trouvePointAcces = () => Promise.resolve({});
depotRequeteurs.trouveRequeteur = () => Promise.resolve(new Requeteur());
depotServicesCommuns.trouveFournisseurs = () => Promise.resolve([new Fournisseur()]);
depotServicesCommuns.trouveTypesJustificatifsPourDemarche = () => Promise.resolve(
[new TypeJustificatif()],
Expand Down Expand Up @@ -124,7 +129,7 @@ describe('Le requêteur de pièce justificative', () => {
return pieceJustificative(config, requete, reponse);
});

it('transmets fournisseur à requête', () => {
it('transmet fournisseur à requête', () => {
expect.assertions(1);

depotServicesCommuns.trouveFournisseurs = () => (
Expand All @@ -143,6 +148,45 @@ describe('Le requêteur de pièce justificative', () => {
return pieceJustificative(config, requete, reponse);
});

it('interroge le dépôt de requêteurs', () => {
expect.assertions(1);
requete.query.idRequeteur = '123456';

depotRequeteurs.trouveRequeteur = (id) => {
expect(id).toBe('123456');
return Promise.resolve(new Requeteur());
};

return pieceJustificative(config, requete, reponse);
});

it('transmet requêteur à requête', () => {
expect.assertions(1);
depotRequeteurs.trouveRequeteur = () => Promise.resolve(new Requeteur({ nom: 'Un requêteur' }));

adaptateurDomibus.envoieMessageRequete = ({ requeteur }) => {
expect(requeteur.nom).toBe('Un requêteur');
return Promise.resolve();
};

return pieceJustificative(config, requete, reponse);
});

it("génère une erreur 422 lorsque le requêteur n'existe pas", () => {
requete.query.idRequeteur = 'requeteurInexistant';
depotRequeteurs.trouveRequeteur = () => Promise.reject(new ErreurRequeteurInexistant('Oups'));

reponse.status = (codeStatus) => {
expect(codeStatus).toEqual(422);
return reponse;
};
reponse.json = (contenu) => {
expect(contenu).toEqual({ erreur: 'Oups' });
};

return pieceJustificative(config, requete, reponse);
});

it('utilise un identifiant de conversation', () => {
adaptateurUUID.genereUUID = () => '11111111-1111-1111-1111-111111111111';

Expand Down
8 changes: 8 additions & 0 deletions test/routes/serveurTest.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
const { ErreurAbsenceReponseDestinataire } = require('../../src/erreurs');
const OOTS_FRANCE = require('../../src/ootsFrance');
const Fournisseur = require('../../src/ebms/fournisseur');
const Requeteur = require('../../src/ebms/requeteur');
const TypeJustificatif = require('../../src/ebms/typeJustificatif');

const serveurTest = () => {
let adaptateurDomibus;
let adaptateurEnvironnement;
let adaptateurUUID;
let depotPointsAcces;
let depotRequeteurs;
let depotServicesCommuns;
let ecouteurDomibus;
let horodateur;
Expand Down Expand Up @@ -37,6 +39,10 @@ const serveurTest = () => {
trouvePointAcces: () => Promise.resolve({}),
};

depotRequeteurs = {
trouveRequeteur: () => Promise.resolve(new Requeteur()),
};

depotServicesCommuns = {
trouveFournisseurs: () => Promise.resolve([new Fournisseur()]),
trouveTypeJustificatif: () => Promise.resolve({}),
Expand All @@ -58,6 +64,7 @@ const serveurTest = () => {
adaptateurEnvironnement,
adaptateurUUID,
depotPointsAcces,
depotRequeteurs,
depotServicesCommuns,
ecouteurDomibus,
horodateur,
Expand All @@ -74,6 +81,7 @@ const serveurTest = () => {
adaptateurUUID: () => adaptateurUUID,
arrete,
depotPointsAcces: () => depotPointsAcces,
depotRequeteurs: () => depotRequeteurs,
depotServicesCommuns: () => depotServicesCommuns,
ecouteurDomibus: () => ecouteurDomibus,
horodateur: () => horodateur,
Expand Down

0 comments on commit 1ae1411

Please sign in to comment.