@open3cl/engine 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/10_besoin_fr.spec.js +1 -0
- package/10_clim.spec.js +1 -0
- package/11_besoin_ecs.spec.js +1 -0
- package/11_ecs.spec.js +1 -0
- package/12.4_pac.spec.js +1 -0
- package/13.2_generateur_combustion.js +2 -10
- package/13.2_generateur_combustion.spec.js +3 -3
- package/13.2_generateur_combustion_ch.spec.js +3 -3
- package/14_generateur_ecs.spec.js +1 -0
- package/15_conso_aux.spec.js +3 -3
- package/2021_04_13_confort_ete.spec.js +1 -0
- package/3.1_b.js +45 -33
- package/3.1_b.spec.js +1 -0
- package/3.2.1_mur.spec.js +1 -0
- package/3.2.2_plancher_bas.spec.js +1 -0
- package/3.2.3_plancher_haut.spec.js +1 -0
- package/3.3.1.4_porte.spec.js +1 -0
- package/3.3_baie_vitree.js +32 -10
- package/3.3_baie_vitree.spec.js +1 -0
- package/3.4_pont_thermique.js +21 -13
- package/3.4_pont_thermique.spec.js +2 -1
- package/4_ventilation.spec.js +1 -0
- package/5_conso_ventilation.spec.js +1 -0
- package/6.2_surface_sud_equivalente.spec.js +1 -0
- package/9_besoin_ch.spec.js +1 -0
- package/9_chauffage.spec.js +3 -3
- package/9_conso_ch.spec.js +1 -0
- package/9_emetteur_ch.spec.js +1 -0
- package/9_generateur_ch.spec.js +1 -0
- package/README.md +442 -291
- package/conso.spec.js +1 -0
- package/engine.js +3 -1
- package/engine.spec.js +1 -0
- package/ficheTechnique.js +133 -53
- package/ficheTechnique.spec.js +46 -14
- package/formula.js +251 -0
- package/formula.spec.js +99 -0
- package/package.json +15 -15
- package/utils.js +195 -44
- package/utils.spec.js +69 -0
- package/features/engine/domain/apport_et_besoin/apport-et-besoin.service.spec.js +0 -222
- package/features/engine/domain/apport_et_besoin/ch/perte-ch-recup.service.spec.js +0 -345
- package/features/engine/domain/apport_et_besoin/ecs/besoin-ecs.service.spec.js +0 -87
- package/features/engine/domain/apport_et_besoin/ecs/perte-ecs-recup.service.spec.js +0 -260
- package/features/engine/domain/apport_et_besoin/froid/besoin-froid.service.spec.js +0 -272
- package/features/engine/domain/apport_et_besoin/surface-sud-equivalente.service.spec.js +0 -231
- package/features/engine/domain/ch/generateur-ch.service.spec.js +0 -849
- package/features/engine/domain/conso/froid/conso-froid.service.spec.js +0 -233
- package/features/engine/domain/ecs/installation-ecs.service.spec.js +0 -337
- package/features/engine/domain/enveloppe/baie_vitree/deperdition-baie-vitree.service.spec.js +0 -607
- package/features/engine/domain/enveloppe/deperdition-enveloppe.service.spec.js +0 -550
- package/features/engine/domain/enveloppe/espace_tampon/espace-tampon.service.spec.js +0 -82
- package/features/engine/domain/enveloppe/mur/deperdition-mur.service.spec.js +0 -542
- package/features/engine/domain/enveloppe/plancher_bas/deperdition-plancher-bas.service.spec.js +0 -430
- package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js +0 -411
- package/features/engine/domain/enveloppe/pont_thermique/deperdition-pont-thermique.service.spec.js +0 -653
- package/features/engine/domain/enveloppe/porte/deperdition-porte.service.spec.js +0 -117
- package/features/engine/domain/enveloppe/ventilation/deperdition-ventilation.service.spec.js +0 -508
package/features/engine/domain/enveloppe/plancher_haut/deperdition-plancher-haut.service.spec.js
DELETED
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
import { getAdemeFileJson } from '../../../../../../test/test-helpers.js';
|
|
2
|
-
import { ContexteBuilder } from '../../contexte.builder.js';
|
|
3
|
-
import { DpeNormalizerService } from '../../../../normalizer/domain/dpe-normalizer.service.js';
|
|
4
|
-
import { DeperditionPlancherHautService } from './deperdition-plancher-haut.service.js';
|
|
5
|
-
import corpus from '../../../../../../test/corpus-sano.json';
|
|
6
|
-
import { TvStore } from '../../../../dpe/infrastructure/tv.store.js';
|
|
7
|
-
import { beforeEach, describe, expect, test } from 'vitest';
|
|
8
|
-
import { describeIntegration } from '../../../../../../test/helpers/integration-test.js';
|
|
9
|
-
|
|
10
|
-
/** @type {DeperditionPlancherHautService} **/
|
|
11
|
-
let service;
|
|
12
|
-
|
|
13
|
-
/** @type {DpeNormalizerService} **/
|
|
14
|
-
let normalizerService;
|
|
15
|
-
|
|
16
|
-
/** @type {ContexteBuilder} **/
|
|
17
|
-
let contexteBuilder;
|
|
18
|
-
|
|
19
|
-
describe('Calcul de déperdition des planchers haut', () => {
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
service = new DeperditionPlancherHautService(new TvStore());
|
|
22
|
-
normalizerService = new DpeNormalizerService();
|
|
23
|
-
contexteBuilder = new ContexteBuilder();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('Determination de uph, uph0 et uph_final', () => {
|
|
27
|
-
test('(2187E1039187C) Plafond 2 : plafond bois sous solives bois', () => {
|
|
28
|
-
/** @type {Contexte} */
|
|
29
|
-
const ctx = {
|
|
30
|
-
effetJoule: false,
|
|
31
|
-
enumPeriodeConstructionId: '2',
|
|
32
|
-
zoneClimatique: {
|
|
33
|
-
id: '3'
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
/** @type {PlancherHautDE} */
|
|
37
|
-
const de = {
|
|
38
|
-
enum_type_adjacence_id: '1',
|
|
39
|
-
enum_type_plancher_haut_id: '10',
|
|
40
|
-
enum_methode_saisie_u0_id: '2',
|
|
41
|
-
enum_type_isolation_id: '9',
|
|
42
|
-
enum_periode_isolation_id: '3',
|
|
43
|
-
enum_methode_saisie_u_id: '8'
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const di = service.execute(ctx, de);
|
|
47
|
-
expect(di.uph0).toBeCloseTo(2.3);
|
|
48
|
-
expect(di.uph).toBeCloseTo(0.75);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
test("(2287E0224445X) Plafond 2 - Plafond structure inconnu (sous combles perdus) donnant sur l'extérieur (combles aménagés) avec isolation intérieure (réalisée entre 1989 et 2000)", () => {
|
|
52
|
-
/** @type {Contexte} */
|
|
53
|
-
const ctx = {
|
|
54
|
-
effetJoule: false,
|
|
55
|
-
enumPeriodeConstructionId: '1',
|
|
56
|
-
zoneClimatique: {
|
|
57
|
-
id: '3'
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
/** @type {PlancherHautDE} */
|
|
61
|
-
const de = {
|
|
62
|
-
enum_type_adjacence_id: '1', // extérieur
|
|
63
|
-
enum_type_plancher_haut_id: '1', // inconnu
|
|
64
|
-
enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
|
|
65
|
-
enum_type_isolation_id: '3', // iti
|
|
66
|
-
enum_periode_isolation_id: '6', // 1989-2000
|
|
67
|
-
enum_methode_saisie_u_id: '7' // année d'isolation différente de l'année de construction saisie justifiée (table forfaitaire)
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const di = service.execute(ctx, de);
|
|
71
|
-
expect(di.uph0).toBeCloseTo(2.5);
|
|
72
|
-
expect(di.uph).toBeCloseTo(0.4); // Dans le DPE d'origine, uph (0.25) est pris dans la partie "comble" et pas "terrasse" alors que le local donne sur l'extérieur
|
|
73
|
-
expect(di.b).toBeCloseTo(1);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test("(2387E0562437Q) Plafond 2 - Plafond structure inconnu (sous combles perdus) donnant sur l'extérieur (combles aménagés) avec isolation intérieure (réalisée entre 1989 et 2000)", () => {
|
|
77
|
-
/** @type {Contexte} */
|
|
78
|
-
const ctx = {
|
|
79
|
-
effetJoule: true,
|
|
80
|
-
enumPeriodeConstructionId: '1',
|
|
81
|
-
zoneClimatique: {
|
|
82
|
-
id: '3'
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
/** @type {PlancherHautDE} */
|
|
86
|
-
const de = {
|
|
87
|
-
enum_type_adjacence_id: '1', // extérieur
|
|
88
|
-
enum_type_plancher_haut_id: '1', // inconnu
|
|
89
|
-
enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
|
|
90
|
-
enum_type_isolation_id: '3', // iti
|
|
91
|
-
enum_periode_isolation_id: '8', // 2006-2012
|
|
92
|
-
enum_methode_saisie_u_id: '7' // année d'isolation différente de l'année de construction saisie justifiée (table forfaitaire)
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const di = service.execute(ctx, de);
|
|
96
|
-
expect(di.uph0).toBeCloseTo(2.5);
|
|
97
|
-
expect(di.uph).toBeCloseTo(0.27); // Dans le DPE d'origine, uph (0.2) est pris dans la partie "comble" et pas "terrasse" alors que le local donne sur l'extérieur
|
|
98
|
-
expect(di.b).toBeCloseTo(1);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
test("(2287E0272588O) Plafond - Combles aménagés sous rampants donnant sur l'extérieur (combles aménagés) avec isolation intérieure (réalisée entre 1975 et 1977)", () => {
|
|
102
|
-
/** @type {Contexte} */
|
|
103
|
-
const ctx = {
|
|
104
|
-
effetJoule: true,
|
|
105
|
-
enumPeriodeConstructionId: '1',
|
|
106
|
-
zoneClimatique: {
|
|
107
|
-
id: '3'
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
/** @type {PlancherHautDE} */
|
|
111
|
-
const de = {
|
|
112
|
-
enum_type_adjacence_id: '1', // extérieur
|
|
113
|
-
enum_type_plancher_haut_id: '12', // combles aménagés sous rampant
|
|
114
|
-
enum_methode_saisie_u0_id: '2', // déterminé selon le matériau et épaisseur à partir de la table de valeur forfaitaire
|
|
115
|
-
enum_type_isolation_id: '3', // iti
|
|
116
|
-
enum_periode_isolation_id: '3', // 1975-1977
|
|
117
|
-
enum_methode_saisie_u_id: '7' // année d'isolation différente de l'année de construction saisie justifiée (table forfaitaire)
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const di = service.execute(ctx, de);
|
|
121
|
-
expect(di.uph0).toBeCloseTo(2.5);
|
|
122
|
-
expect(di.uph).toBeCloseTo(0.5);
|
|
123
|
-
expect(di.b).toBeCloseTo(1);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
test('Test de plancher avec uph directement saisie', () => {
|
|
127
|
-
/** @type {Contexte} */
|
|
128
|
-
const ctx = {
|
|
129
|
-
effetJoule: false,
|
|
130
|
-
enumPeriodeConstructionId: '6',
|
|
131
|
-
zoneClimatique: {
|
|
132
|
-
id: '3'
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
/** @type {PlancherHautDE} */
|
|
136
|
-
const de = {
|
|
137
|
-
enum_type_adjacence_id: '21',
|
|
138
|
-
enum_type_plancher_haut_id: '1',
|
|
139
|
-
enum_methode_saisie_u0_id: '5',
|
|
140
|
-
enum_type_isolation_id: '2',
|
|
141
|
-
enum_methode_saisie_u_id: '9',
|
|
142
|
-
uph_saisi: 1.25
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
const di = service.execute(ctx, de);
|
|
146
|
-
expect(di.uph).toBeCloseTo(1.25);
|
|
147
|
-
expect(di.uph0).toBeUndefined();
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
test('Test de plancher avec uph0 directement saisie', () => {
|
|
151
|
-
/** @type {Contexte} */
|
|
152
|
-
const ctx = {
|
|
153
|
-
effetJoule: false,
|
|
154
|
-
enumPeriodeConstructionId: '6',
|
|
155
|
-
zoneClimatique: {
|
|
156
|
-
id: '3'
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
/** @type {PlancherHautDE} */
|
|
160
|
-
const de = {
|
|
161
|
-
enum_type_adjacence_id: '21',
|
|
162
|
-
enum_type_plancher_haut_id: '1',
|
|
163
|
-
enum_methode_saisie_u0_id: '3',
|
|
164
|
-
enum_type_isolation_id: '2',
|
|
165
|
-
enum_periode_isolation_id: '3',
|
|
166
|
-
enum_methode_saisie_u_id: '7',
|
|
167
|
-
uph0_saisi: 1.25
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
const di = service.execute(ctx, de);
|
|
171
|
-
expect(di.uph0).toBeCloseTo(1.25);
|
|
172
|
-
expect(di.uph).toBeCloseTo(0.5);
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
test('Test de plancher avec uph0 type de paroi inconnu (valeur par défaut)', () => {
|
|
176
|
-
/** @type {Contexte} */
|
|
177
|
-
const ctx = {
|
|
178
|
-
effetJoule: false,
|
|
179
|
-
enumPeriodeConstructionId: '6',
|
|
180
|
-
zoneClimatique: {
|
|
181
|
-
id: '3'
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
/** @type {PlancherHautDE} */
|
|
185
|
-
const de = {
|
|
186
|
-
enum_type_adjacence_id: '1',
|
|
187
|
-
enum_type_plancher_haut_id: '1',
|
|
188
|
-
enum_methode_saisie_u0_id: '1',
|
|
189
|
-
enum_type_isolation_id: '1',
|
|
190
|
-
enum_methode_saisie_u_id: '7'
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
const di = service.execute(ctx, de);
|
|
194
|
-
expect(di.uph0).toBeCloseTo(2.5);
|
|
195
|
-
expect(di.uph).toBeCloseTo(0.4);
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
test('Plancher non isolé (méthode 1) : uph vaut uph_nu', () => {
|
|
199
|
-
/** @type {Contexte} */
|
|
200
|
-
const ctx = {
|
|
201
|
-
effetJoule: false,
|
|
202
|
-
enumPeriodeConstructionId: '2',
|
|
203
|
-
zoneClimatique: { id: '3' }
|
|
204
|
-
};
|
|
205
|
-
/** @type {PlancherHautDE} */
|
|
206
|
-
const de = {
|
|
207
|
-
enum_type_adjacence_id: '1',
|
|
208
|
-
enum_type_plancher_haut_id: '10',
|
|
209
|
-
enum_methode_saisie_u0_id: '2',
|
|
210
|
-
enum_type_isolation_id: '2',
|
|
211
|
-
enum_methode_saisie_u_id: '1'
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
const di = service.execute(ctx, de);
|
|
215
|
-
expect(di.uph0).toBeCloseTo(2.3);
|
|
216
|
-
expect(di.uph).toBeCloseTo(2.3);
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
test("Épaisseur d'isolation saisie (méthode 4) : uph calculé à partir de l'épaisseur", () => {
|
|
220
|
-
/** @type {Contexte} */
|
|
221
|
-
const ctx = {
|
|
222
|
-
effetJoule: false,
|
|
223
|
-
enumPeriodeConstructionId: '2',
|
|
224
|
-
zoneClimatique: { id: '3' }
|
|
225
|
-
};
|
|
226
|
-
/** @type {PlancherHautDE} */
|
|
227
|
-
const de = {
|
|
228
|
-
enum_type_adjacence_id: '1',
|
|
229
|
-
enum_type_plancher_haut_id: '10',
|
|
230
|
-
enum_methode_saisie_u0_id: '2',
|
|
231
|
-
enum_type_isolation_id: '3',
|
|
232
|
-
enum_methode_saisie_u_id: '4',
|
|
233
|
-
epaisseur_isolation: 10
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
const di = service.execute(ctx, de);
|
|
237
|
-
expect(di.uph0).toBeCloseTo(2.3);
|
|
238
|
-
// 1 / (1 / 2.3 + (10 * 0.01) / 0.04) => valeur de référence de régression
|
|
239
|
-
expect(di.uph).toBeCloseTo(0.34074);
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
test("Résistance d'isolation saisie (méthode 6) : uph calculé à partir de la résistance", () => {
|
|
243
|
-
/** @type {Contexte} */
|
|
244
|
-
const ctx = {
|
|
245
|
-
effetJoule: false,
|
|
246
|
-
enumPeriodeConstructionId: '2',
|
|
247
|
-
zoneClimatique: { id: '3' }
|
|
248
|
-
};
|
|
249
|
-
/** @type {PlancherHautDE} */
|
|
250
|
-
const de = {
|
|
251
|
-
enum_type_adjacence_id: '1',
|
|
252
|
-
enum_type_plancher_haut_id: '10',
|
|
253
|
-
enum_methode_saisie_u0_id: '2',
|
|
254
|
-
enum_type_isolation_id: '3',
|
|
255
|
-
enum_methode_saisie_u_id: '6',
|
|
256
|
-
resistance_isolation: 2.5
|
|
257
|
-
};
|
|
258
|
-
|
|
259
|
-
const di = service.execute(ctx, de);
|
|
260
|
-
expect(di.uph0).toBeCloseTo(2.3);
|
|
261
|
-
// 1 / (1 / 2.3 + 2.5) => valeur de référence de régression
|
|
262
|
-
expect(di.uph).toBeCloseTo(0.34074);
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
test.each([
|
|
266
|
-
// Isolation inconnue via table forfaitaire (méthode 2) et variantes épaisseur/résistance.
|
|
267
|
-
{ enumMethodeSaisieUId: '2', uphExpected: 0.75 },
|
|
268
|
-
{ enumMethodeSaisieUId: '3', epaisseurIsolation: 10, uphExpected: 0.34074 },
|
|
269
|
-
{ enumMethodeSaisieUId: '5', resistanceIsolation: 2.5, uphExpected: 0.34074 }
|
|
270
|
-
])(
|
|
271
|
-
'uph pour la méthode de saisie $enumMethodeSaisieUId',
|
|
272
|
-
({ enumMethodeSaisieUId, epaisseurIsolation, resistanceIsolation, uphExpected }) => {
|
|
273
|
-
/** @type {Contexte} */
|
|
274
|
-
const ctx = {
|
|
275
|
-
effetJoule: false,
|
|
276
|
-
enumPeriodeConstructionId: '2',
|
|
277
|
-
zoneClimatique: { id: '3' }
|
|
278
|
-
};
|
|
279
|
-
/** @type {PlancherHautDE} */
|
|
280
|
-
const de = {
|
|
281
|
-
enum_type_adjacence_id: '1',
|
|
282
|
-
enum_type_plancher_haut_id: '10',
|
|
283
|
-
enum_methode_saisie_u0_id: '2',
|
|
284
|
-
enum_type_isolation_id: '3',
|
|
285
|
-
enum_periode_isolation_id: '3',
|
|
286
|
-
enum_methode_saisie_u_id: enumMethodeSaisieUId,
|
|
287
|
-
epaisseur_isolation: epaisseurIsolation,
|
|
288
|
-
resistance_isolation: resistanceIsolation
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
const di = service.execute(ctx, de);
|
|
292
|
-
expect(di.uph0).toBeCloseTo(2.3);
|
|
293
|
-
// Valeurs de référence de régression
|
|
294
|
-
expect(di.uph).toBeCloseTo(uphExpected);
|
|
295
|
-
}
|
|
296
|
-
);
|
|
297
|
-
|
|
298
|
-
test("Adjacence 'locaux non chauffés non accessible' (7) : uph_tab pris en catégorie terrasse", () => {
|
|
299
|
-
// @see Methode_de_calcul_3CL_DPE_2021-338.pdf - §3.2.3.1
|
|
300
|
-
/** @type {Contexte} */
|
|
301
|
-
const ctx = {
|
|
302
|
-
effetJoule: false,
|
|
303
|
-
enumPeriodeConstructionId: '2',
|
|
304
|
-
zoneClimatique: { id: '3' }
|
|
305
|
-
};
|
|
306
|
-
/** @type {PlancherHautDE} */
|
|
307
|
-
const de = {
|
|
308
|
-
enum_type_adjacence_id: '7',
|
|
309
|
-
enum_type_plancher_haut_id: '1',
|
|
310
|
-
enum_methode_saisie_u0_id: '2',
|
|
311
|
-
enum_type_isolation_id: '3',
|
|
312
|
-
enum_periode_isolation_id: '6',
|
|
313
|
-
enum_methode_saisie_u_id: '8'
|
|
314
|
-
};
|
|
315
|
-
|
|
316
|
-
const di = service.execute(ctx, de);
|
|
317
|
-
expect(di.uph0).toBeCloseTo(2.5);
|
|
318
|
-
// Valeur de référence de régression (catégorie terrasse)
|
|
319
|
-
expect(di.uph).toBeCloseTo(0.4);
|
|
320
|
-
});
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
test.each([
|
|
324
|
-
{
|
|
325
|
-
label: 'plafond avec isolation inconnue et période isolation 1974',
|
|
326
|
-
enumTypeIsolationId: 1,
|
|
327
|
-
enumPeriodIsolationId: 1,
|
|
328
|
-
enumPeriodeConstructionId: undefined,
|
|
329
|
-
typeIsolationExpected: 2
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
label: 'plafond avec isolation inconnue et période construction 1974',
|
|
333
|
-
enumTypeIsolationId: 1,
|
|
334
|
-
enumPeriodIsolationId: undefined,
|
|
335
|
-
enumPeriodeConstructionId: 1,
|
|
336
|
-
typeIsolationExpected: 2
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
label: 'plafond avec isolation inconnue et période isolation 1975',
|
|
340
|
-
enumTypeIsolationId: 1,
|
|
341
|
-
enumPeriodIsolationId: 3,
|
|
342
|
-
enumPeriodeConstructionId: undefined,
|
|
343
|
-
typeIsolationExpected: 4
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
label: 'plafond avec isolation de type "isolé mais type d\'isolation inconnu"',
|
|
347
|
-
enumTypeIsolationId: 9,
|
|
348
|
-
enumPeriodIsolationId: 1,
|
|
349
|
-
enumPeriodeConstructionId: undefined,
|
|
350
|
-
typeIsolationExpected: 4
|
|
351
|
-
},
|
|
352
|
-
{
|
|
353
|
-
label: 'plafond avec isolation iti+ite',
|
|
354
|
-
enumTypeIsolationId: 6,
|
|
355
|
-
enumPeriodIsolationId: 1,
|
|
356
|
-
enumPeriodeConstructionId: undefined,
|
|
357
|
-
typeIsolationExpected: 6
|
|
358
|
-
}
|
|
359
|
-
])(
|
|
360
|
-
"Récupération du type d'isolation pour $label",
|
|
361
|
-
({
|
|
362
|
-
enumTypeIsolationId,
|
|
363
|
-
enumPeriodIsolationId = undefined,
|
|
364
|
-
enumPeriodeConstructionId = undefined,
|
|
365
|
-
typeIsolationExpected
|
|
366
|
-
}) => {
|
|
367
|
-
/**
|
|
368
|
-
* @type {PlancherHautDE}
|
|
369
|
-
*/
|
|
370
|
-
let plancherHautDE = {
|
|
371
|
-
enum_type_isolation_id: enumTypeIsolationId,
|
|
372
|
-
enum_periode_isolation_id: enumPeriodIsolationId
|
|
373
|
-
};
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* @type {Contexte}
|
|
377
|
-
*/
|
|
378
|
-
const ctx = { enumPeriodeConstructionId };
|
|
379
|
-
|
|
380
|
-
expect(service.typeIsolation(ctx, plancherHautDE)).toBe(typeIsolationExpected);
|
|
381
|
-
}
|
|
382
|
-
);
|
|
383
|
-
|
|
384
|
-
describeIntegration("Test d'intégration de plancher haut", () => {
|
|
385
|
-
test.each(corpus)('vérification des DI des ph pour dpe %s', (ademeId) => {
|
|
386
|
-
/**
|
|
387
|
-
* @type {Dpe}
|
|
388
|
-
*/
|
|
389
|
-
let dpeRequest = getAdemeFileJson(ademeId);
|
|
390
|
-
dpeRequest = normalizerService.normalize(dpeRequest);
|
|
391
|
-
|
|
392
|
-
/** @type {Contexte} */
|
|
393
|
-
const ctx = contexteBuilder.fromDpe(dpeRequest);
|
|
394
|
-
|
|
395
|
-
/** @type {PlancherHaut[]} */
|
|
396
|
-
const phs = dpeRequest.logement.enveloppe.plancher_haut_collection?.plancher_haut || [];
|
|
397
|
-
|
|
398
|
-
phs.forEach((ph) => {
|
|
399
|
-
const di = service.execute(ctx, ph.donnee_entree);
|
|
400
|
-
|
|
401
|
-
if (ph.donnee_intermediaire) {
|
|
402
|
-
expect(di.uph0).toBeCloseTo(ph.donnee_intermediaire.uph0, 2);
|
|
403
|
-
} else {
|
|
404
|
-
expect(di.uph0).toBeUndefined();
|
|
405
|
-
}
|
|
406
|
-
expect(di.uph).toBeCloseTo(ph.donnee_intermediaire.uph, 2);
|
|
407
|
-
expect(di.b).toBeCloseTo(ph.donnee_intermediaire.b, 2);
|
|
408
|
-
});
|
|
409
|
-
});
|
|
410
|
-
});
|
|
411
|
-
});
|