Skip to content

Commit

Permalink
[CORRECTION] Corrige le statut de saisie des mesures générales
Browse files Browse the repository at this point in the history
  • Loading branch information
JacquesRogueOne committed May 9, 2022
1 parent 6df37fa commit 4acb486
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/modeles/homologation.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class Homologation {

const idMesures = Object.keys(moteurRegles.mesures(this.descriptionService));
mesuresGenerales = mesuresGenerales.filter((m) => idMesures.includes(m.id));
this.mesures = new Mesures({ mesuresGenerales, mesuresSpecifiques }, referentiel);
this.mesures = new Mesures({ mesuresGenerales, mesuresSpecifiques }, referentiel, idMesures);

this.rolesResponsabilites = new RolesResponsabilites(rolesResponsabilites);
this.risques = new Risques(
Expand Down
13 changes: 12 additions & 1 deletion src/modeles/mesures.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const MesuresSpecifiques = require('./mesuresSpecifiques');
const Referentiel = require('../referentiel');

class Mesures extends InformationsHomologation {
constructor(donnees = {}, referentiel = Referentiel.creeReferentielVide()) {
constructor(donnees = {}, referentiel = Referentiel.creeReferentielVide(), identifiantsMesures) {
super({
listesAgregats: {
mesuresGenerales: MesuresGenerales,
Expand All @@ -13,6 +13,7 @@ class Mesures extends InformationsHomologation {
});
this.renseigneProprietes(donnees, referentiel);
this.referentiel = referentiel;
this.identifiantsMesures = identifiantsMesures || this.referentiel.identifiantsMesures();
}

nonSaisies() {
Expand All @@ -26,6 +27,16 @@ class Mesures extends InformationsHomologation {
statistiques() {
return this.mesuresGenerales.statistiques();
}

statutSaisie() {
const statutSaisieMesures = super.statutSaisie();
if (statutSaisieMesures === Mesures.COMPLETES
&& this.identifiantsMesures.length !== this.mesuresGenerales.nombre()) {
return Mesures.A_COMPLETER;
}

return statutSaisieMesures;
}
}

module.exports = Mesures;
2 changes: 1 addition & 1 deletion src/modeles/mesuresGenerales.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class MesuresGenerales extends ElementsConstructibles {

statutSaisie() {
if (this.nonSaisies()) return MesuresGenerales.A_SAISIR;
if (this.items.length === this.referentiel.identifiantsMesures().length) {
if (this.items.every((item) => item.statutSaisie() === MesuresGenerales.COMPLETES)) {
return MesuresGenerales.COMPLETES;
}
return MesuresGenerales.A_COMPLETER;
Expand Down
17 changes: 15 additions & 2 deletions test/modeles/mesures.spec.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
const expect = require('expect.js');

const InformationsHomologation = require('../../src/modeles/informationsHomologation');
const { A_COMPLETER } = require('../../src/modeles/informationsHomologation');
const Mesures = require('../../src/modeles/mesures');
const MesuresSpecifiques = require('../../src/modeles/mesuresSpecifiques');
const Referentiel = require('../../src/referentiel');

const elles = it;

Expand All @@ -21,6 +22,18 @@ describe('Les mesures liées à une homologation', () => {
mesuresSpecifiques: [{ description: 'Une mesure spécifique' }],
});

expect(mesures.statutSaisie()).to.equal(InformationsHomologation.A_COMPLETER);
expect(mesures.statutSaisie()).to.equal(A_COMPLETER);
});

elles('sont à completer si toutes les mesures nécessaires ne sont pas complétées', () => {
const referentiel = Referentiel.creeReferentielVide();
referentiel.identifiantsMesures = () => ['mesure 1', 'mesure 2'];

const mesures = new Mesures({
mesuresGenerales: [{ id: 'mesure 1', statut: 'fait' }],
mesuresSpecifiques: [],
}, referentiel);

expect(mesures.statutSaisie()).to.equal(A_COMPLETER);
});
});
30 changes: 30 additions & 0 deletions test/modeles/mesuresGenerales.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const expect = require('expect.js');

const MesuresGenerales = require('../../src/modeles/mesuresGenerales');

const { A_SAISIR, COMPLETES, A_COMPLETER } = MesuresGenerales;

describe('La liste des mesures générales', () => {
const referentiel = { identifiantsMesures: () => ['mesure'] };

it("est à saisir quand rien n'est saisi", () => {
const donnees = { mesuresGenerales: [] };
const mesuresGenerales = new MesuresGenerales(donnees);

expect(mesuresGenerales.statutSaisie()).to.equal(A_SAISIR);
});

it('est complete quand les mesures sont completes', () => {
const donnees = { mesuresGenerales: [{ id: 'mesure', statut: 'fait' }] };
const mesuresGenerales = new MesuresGenerales(donnees, referentiel);

expect(mesuresGenerales.statutSaisie()).to.equal(COMPLETES);
});

it('est à completer quand toutes les mesures ne sont pas completes', () => {
const donnees = { mesuresGenerales: [{ id: 'mesure' }] };
const mesuresGenerales = new MesuresGenerales(donnees, referentiel);

expect(mesuresGenerales.statutSaisie()).to.equal(A_COMPLETER);
});
});

0 comments on commit 4acb486

Please sign in to comment.