@open3cl/engine 1.7.0 → 1.7.1
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.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.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.spec.js +1 -0
- package/3.4_pont_thermique.spec.js +1 -0
- 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 +412 -291
- package/conso.spec.js +1 -0
- package/engine.js +3 -1
- package/engine.spec.js +1 -0
- package/package.json +15 -14
- 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_bas/deperdition-plancher-bas.service.spec.js
DELETED
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
import corpus from '../../../../../../test/corpus-sano.json';
|
|
2
|
-
import { getAdemeFileJson } from '../../../../../../test/test-helpers.js';
|
|
3
|
-
import { ContexteBuilder } from '../../contexte.builder.js';
|
|
4
|
-
import { DpeNormalizerService } from '../../../../normalizer/domain/dpe-normalizer.service.js';
|
|
5
|
-
import { DeperditionPlancherBasService } from './deperdition-plancher-bas.service.js';
|
|
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 {DeperditionPlancherBasService} **/
|
|
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 bas', () => {
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
service = new DeperditionPlancherBasService(new TvStore());
|
|
22
|
-
normalizerService = new DpeNormalizerService();
|
|
23
|
-
contexteBuilder = new ContexteBuilder();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('Determination de upb, upb0 et upb_final', () => {
|
|
27
|
-
test('Plancher 1 - Dalle béton non isolée donnant sur un terre-plein', () => {
|
|
28
|
-
/** @type {Contexte} */
|
|
29
|
-
const ctx = {
|
|
30
|
-
effetJoule: false,
|
|
31
|
-
enumPeriodeConstructionId: '6',
|
|
32
|
-
zoneClimatique: {
|
|
33
|
-
id: '3'
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
/** @type {PlancherBasDE} */
|
|
37
|
-
const de = {
|
|
38
|
-
enum_type_adjacence_id: '5',
|
|
39
|
-
enum_type_plancher_bas_id: '9',
|
|
40
|
-
enum_methode_saisie_u0_id: '2',
|
|
41
|
-
enum_type_isolation_id: '2',
|
|
42
|
-
enum_methode_saisie_u_id: '1',
|
|
43
|
-
calcul_ue: 1,
|
|
44
|
-
perimetre_ue: 19.2,
|
|
45
|
-
ue: 0.49684211
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const di = service.execute(ctx, de, []);
|
|
49
|
-
expect(di.upb).toBeCloseTo(2);
|
|
50
|
-
expect(di.upb0).toBeCloseTo(2);
|
|
51
|
-
expect(di.upb_final).toBeCloseTo(0.49684211);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test('Plancher 1 - Plancher lourd type entrevous terre-cuite, poutrelles béton donnant sur un sous-sol non chauffé avec isolation intrinsèque ou en sous-face (5 cm)', () => {
|
|
55
|
-
/** @type {Contexte} */
|
|
56
|
-
const ctx = {
|
|
57
|
-
effetJoule: false,
|
|
58
|
-
enumPeriodeConstructionId: '6',
|
|
59
|
-
zoneClimatique: {
|
|
60
|
-
id: '3'
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
/** @type {PlancherBasDE} */
|
|
64
|
-
const de = {
|
|
65
|
-
enum_type_adjacence_id: '6',
|
|
66
|
-
enum_type_plancher_bas_id: '11',
|
|
67
|
-
enum_methode_saisie_u0_id: '2',
|
|
68
|
-
enum_type_isolation_id: '4',
|
|
69
|
-
epaisseur_isolation: 5,
|
|
70
|
-
enum_methode_saisie_u_id: '3',
|
|
71
|
-
calcul_ue: 0,
|
|
72
|
-
perimetre_ue: 27,
|
|
73
|
-
surface_ue: 42.08,
|
|
74
|
-
ue: 0.37117494
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
const di = service.execute(ctx, de, [{ donnee_entree: de }]);
|
|
78
|
-
expect(di.upb).toBeCloseTo(0.59154929577464788);
|
|
79
|
-
expect(di.upb0).toBeCloseTo(2);
|
|
80
|
-
expect(di.upb_final).toBeCloseTo(0.37117494);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
test('Plancher 2 - Plancher avec ou sans remplissage non isolé donnant sur un garage', () => {
|
|
84
|
-
/** @type {Contexte} */
|
|
85
|
-
const ctx = {
|
|
86
|
-
effetJoule: false,
|
|
87
|
-
enumPeriodeConstructionId: '6',
|
|
88
|
-
zoneClimatique: {
|
|
89
|
-
id: '3'
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
/** @type {PlancherBasDE} */
|
|
93
|
-
const de = {
|
|
94
|
-
enum_type_adjacence_id: '21',
|
|
95
|
-
enum_type_plancher_bas_id: '2',
|
|
96
|
-
enum_methode_saisie_u0_id: '2',
|
|
97
|
-
enum_type_isolation_id: '2',
|
|
98
|
-
enum_methode_saisie_u_id: '1',
|
|
99
|
-
calcul_ue: 0
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
const di = service.execute(ctx, de, []);
|
|
103
|
-
expect(di.upb).toBeCloseTo(1.45);
|
|
104
|
-
expect(di.upb0).toBeCloseTo(1.45);
|
|
105
|
-
expect(di.upb_final).toBeCloseTo(1.45);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
test('Test de plancher avec upb0 saisie', () => {
|
|
109
|
-
/** @type {Contexte} */
|
|
110
|
-
const ctx = {
|
|
111
|
-
effetJoule: false,
|
|
112
|
-
enumPeriodeConstructionId: '6',
|
|
113
|
-
zoneClimatique: {
|
|
114
|
-
id: '3'
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
/** @type {PlancherBasDE} */
|
|
118
|
-
const de = {
|
|
119
|
-
enum_type_adjacence_id: '21',
|
|
120
|
-
enum_type_plancher_bas_id: '2',
|
|
121
|
-
enum_methode_saisie_u0_id: '9',
|
|
122
|
-
enum_type_isolation_id: '2',
|
|
123
|
-
enum_methode_saisie_u_id: '1',
|
|
124
|
-
calcul_ue: 0,
|
|
125
|
-
upb0_saisi: 3.2
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const di = service.execute(ctx, de, []);
|
|
129
|
-
expect(di.upb).toBeCloseTo(2);
|
|
130
|
-
expect(di.upb0).toBeCloseTo(3.2);
|
|
131
|
-
expect(di.upb_final).toBeCloseTo(2);
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
test('Test de plancher avec type de paroi inconnue', () => {
|
|
135
|
-
/** @type {Contexte} */
|
|
136
|
-
const ctx = {
|
|
137
|
-
effetJoule: false,
|
|
138
|
-
enumPeriodeConstructionId: '6',
|
|
139
|
-
zoneClimatique: {
|
|
140
|
-
id: '3'
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
/** @type {PlancherBasDE} */
|
|
144
|
-
const de = {
|
|
145
|
-
enum_type_adjacence_id: '21',
|
|
146
|
-
enum_type_plancher_bas_id: '1',
|
|
147
|
-
enum_methode_saisie_u0_id: '1',
|
|
148
|
-
enum_type_isolation_id: '2',
|
|
149
|
-
enum_methode_saisie_u_id: '1',
|
|
150
|
-
calcul_ue: 0
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
const di = service.execute(ctx, de, []);
|
|
154
|
-
expect(di.upb).toBeCloseTo(2);
|
|
155
|
-
expect(di.upb0).toBeCloseTo(2);
|
|
156
|
-
expect(di.upb_final).toBeCloseTo(2);
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
test('Test de plancher avec upb directement saisie', () => {
|
|
160
|
-
/** @type {Contexte} */
|
|
161
|
-
const ctx = {
|
|
162
|
-
effetJoule: false,
|
|
163
|
-
enumPeriodeConstructionId: '6',
|
|
164
|
-
zoneClimatique: {
|
|
165
|
-
id: '3'
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
/** @type {PlancherBasDE} */
|
|
169
|
-
const de = {
|
|
170
|
-
enum_type_adjacence_id: '21',
|
|
171
|
-
enum_type_plancher_bas_id: '1',
|
|
172
|
-
enum_methode_saisie_u0_id: '5',
|
|
173
|
-
enum_type_isolation_id: '2',
|
|
174
|
-
enum_methode_saisie_u_id: '9',
|
|
175
|
-
calcul_ue: 0,
|
|
176
|
-
upb_saisi: 1.25
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
const di = service.execute(ctx, de, []);
|
|
180
|
-
expect(di.upb).toBeCloseTo(1.25);
|
|
181
|
-
expect(di.upb0).toBeUndefined();
|
|
182
|
-
expect(di.upb_final).toBeCloseTo(1.25);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
test('Isolation inconnue (méthode 2) : upb plafonné par la valeur forfaitaire de la table', () => {
|
|
186
|
-
/** @type {Contexte} */
|
|
187
|
-
const ctx = {
|
|
188
|
-
effetJoule: false,
|
|
189
|
-
enumPeriodeConstructionId: '6',
|
|
190
|
-
zoneClimatique: { id: '3' }
|
|
191
|
-
};
|
|
192
|
-
/** @type {PlancherBasDE} */
|
|
193
|
-
const de = {
|
|
194
|
-
enum_type_adjacence_id: '21',
|
|
195
|
-
enum_type_plancher_bas_id: '2',
|
|
196
|
-
enum_methode_saisie_u0_id: '2',
|
|
197
|
-
enum_type_isolation_id: '3',
|
|
198
|
-
enum_methode_saisie_u_id: '2',
|
|
199
|
-
enum_periode_isolation_id: '6',
|
|
200
|
-
calcul_ue: 0
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
const di = service.execute(ctx, de, []);
|
|
204
|
-
expect(di.upb0).toBeCloseTo(1.45);
|
|
205
|
-
// Valeur de référence de régression
|
|
206
|
-
expect(di.upb).toBeCloseTo(0.5);
|
|
207
|
-
expect(di.upb_final).toBeCloseTo(0.5);
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
test.each([
|
|
211
|
-
// Méthodes 7 (année d'isolation) et 8 (année de construction) : même table forfaitaire.
|
|
212
|
-
{ enumMethodeSaisieUId: '7' },
|
|
213
|
-
{ enumMethodeSaisieUId: '8' }
|
|
214
|
-
])(
|
|
215
|
-
'upb via table forfaitaire pour la méthode de saisie $enumMethodeSaisieUId',
|
|
216
|
-
({ enumMethodeSaisieUId }) => {
|
|
217
|
-
/** @type {Contexte} */
|
|
218
|
-
const ctx = {
|
|
219
|
-
effetJoule: false,
|
|
220
|
-
enumPeriodeConstructionId: '6',
|
|
221
|
-
zoneClimatique: { id: '3' }
|
|
222
|
-
};
|
|
223
|
-
/** @type {PlancherBasDE} */
|
|
224
|
-
const de = {
|
|
225
|
-
enum_type_adjacence_id: '21',
|
|
226
|
-
enum_type_plancher_bas_id: '2',
|
|
227
|
-
enum_methode_saisie_u0_id: '2',
|
|
228
|
-
enum_type_isolation_id: '3',
|
|
229
|
-
enum_methode_saisie_u_id: enumMethodeSaisieUId,
|
|
230
|
-
enum_periode_isolation_id: '6',
|
|
231
|
-
calcul_ue: 0
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
const di = service.execute(ctx, de, []);
|
|
235
|
-
expect(di.upb0).toBeCloseTo(1.45);
|
|
236
|
-
// Valeur de référence de régression
|
|
237
|
-
expect(di.upb).toBeCloseTo(0.5);
|
|
238
|
-
}
|
|
239
|
-
);
|
|
240
|
-
|
|
241
|
-
test("Résistance d'isolation saisie (méthode 6) : upb calculé à partir de la résistance", () => {
|
|
242
|
-
/** @type {Contexte} */
|
|
243
|
-
const ctx = {
|
|
244
|
-
effetJoule: false,
|
|
245
|
-
enumPeriodeConstructionId: '6',
|
|
246
|
-
zoneClimatique: { id: '3' }
|
|
247
|
-
};
|
|
248
|
-
/** @type {PlancherBasDE} */
|
|
249
|
-
const de = {
|
|
250
|
-
enum_type_adjacence_id: '21',
|
|
251
|
-
enum_type_plancher_bas_id: '2',
|
|
252
|
-
enum_methode_saisie_u0_id: '2',
|
|
253
|
-
enum_type_isolation_id: '3',
|
|
254
|
-
enum_methode_saisie_u_id: '6',
|
|
255
|
-
resistance_isolation: 2.5,
|
|
256
|
-
calcul_ue: 0
|
|
257
|
-
};
|
|
258
|
-
|
|
259
|
-
const di = service.execute(ctx, de, []);
|
|
260
|
-
expect(di.upb0).toBeCloseTo(1.45);
|
|
261
|
-
// 1 / (1 / 1.45 + 2.5) => valeur de référence de régression
|
|
262
|
-
expect(di.upb).toBeCloseTo(0.31351);
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
test("Résistance d'isolation saisie (méthode 5) : upb calculé à partir de la résistance", () => {
|
|
266
|
-
/** @type {Contexte} */
|
|
267
|
-
const ctx = {
|
|
268
|
-
effetJoule: false,
|
|
269
|
-
enumPeriodeConstructionId: '6',
|
|
270
|
-
zoneClimatique: { id: '3' }
|
|
271
|
-
};
|
|
272
|
-
/** @type {PlancherBasDE} */
|
|
273
|
-
const de = {
|
|
274
|
-
enum_type_adjacence_id: '21',
|
|
275
|
-
enum_type_plancher_bas_id: '2',
|
|
276
|
-
enum_methode_saisie_u0_id: '2',
|
|
277
|
-
enum_type_isolation_id: '3',
|
|
278
|
-
enum_methode_saisie_u_id: '5',
|
|
279
|
-
resistance_isolation: 2.5,
|
|
280
|
-
calcul_ue: 0
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
const di = service.execute(ctx, de, []);
|
|
284
|
-
expect(di.upb0).toBeCloseTo(1.45);
|
|
285
|
-
// 1 / (1 / 1.45 + 2.5) => valeur de référence de régression
|
|
286
|
-
expect(di.upb).toBeCloseTo(0.31351);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
test('Calcul Ue avec repli sur surface de paroi et périmètre nul (dsp par défaut = 1)', () => {
|
|
290
|
-
// Adjacence terre-plein, calcul_ue = 0 : le upb_final passe par la table Ue.
|
|
291
|
-
// Le plancher n'a ni surface_ue ni perimetre_ue => on retombe sur surface_paroi_opaque
|
|
292
|
-
// et un dsp forfaitaire de 1.
|
|
293
|
-
/** @type {Contexte} */
|
|
294
|
-
const ctx = {
|
|
295
|
-
effetJoule: false,
|
|
296
|
-
enumPeriodeConstructionId: '6',
|
|
297
|
-
zoneClimatique: { id: '3' }
|
|
298
|
-
};
|
|
299
|
-
/** @type {PlancherBasDE} */
|
|
300
|
-
const de = {
|
|
301
|
-
enum_type_adjacence_id: '5',
|
|
302
|
-
enum_type_plancher_bas_id: '9',
|
|
303
|
-
enum_methode_saisie_u0_id: '2',
|
|
304
|
-
enum_type_isolation_id: '2',
|
|
305
|
-
enum_methode_saisie_u_id: '1',
|
|
306
|
-
calcul_ue: 0,
|
|
307
|
-
surface_paroi_opaque: 40
|
|
308
|
-
};
|
|
309
|
-
|
|
310
|
-
const di = service.execute(ctx, de, [{ donnee_entree: de }]);
|
|
311
|
-
expect(di.upb0).toBeCloseTo(2);
|
|
312
|
-
expect(di.upb).toBeCloseTo(2);
|
|
313
|
-
// Valeur de référence de régression (Ue table, dsp = 1)
|
|
314
|
-
expect(di.upb_final).toBeCloseTo(0.74421);
|
|
315
|
-
});
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
test.each([
|
|
319
|
-
{
|
|
320
|
-
label:
|
|
321
|
-
'plancher bas avec isolation inconnue, adjacence terre-plein et période isolation 1974',
|
|
322
|
-
enumTypeIsolationId: 1,
|
|
323
|
-
enumTypeAdjacenceId: 5,
|
|
324
|
-
enumPeriodIsolationId: 1,
|
|
325
|
-
enumPeriodeConstructionId: undefined,
|
|
326
|
-
typeIsolationExpected: 2
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
label:
|
|
330
|
-
'plancher bas avec isolation inconnue, adjacence terre-plein et période construction 2000',
|
|
331
|
-
enumTypeIsolationId: 1,
|
|
332
|
-
enumTypeAdjacenceId: 5,
|
|
333
|
-
enumPeriodIsolationId: undefined,
|
|
334
|
-
enumPeriodeConstructionId: 6,
|
|
335
|
-
typeIsolationExpected: 2
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
label:
|
|
339
|
-
'plancher bas avec isolation inconnue, adjacence terre-plein et période isolation 2001',
|
|
340
|
-
enumTypeIsolationId: 1,
|
|
341
|
-
enumPeriodIsolationId: 7,
|
|
342
|
-
enumTypeAdjacenceId: 5,
|
|
343
|
-
enumPeriodeConstructionId: undefined,
|
|
344
|
-
typeIsolationExpected: 4
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
label: 'plancher bas avec isolation inconnue, adjacence garage et période isolation 1974',
|
|
348
|
-
enumTypeIsolationId: 1,
|
|
349
|
-
enumPeriodIsolationId: 2,
|
|
350
|
-
enumTypeAdjacenceId: 8,
|
|
351
|
-
enumPeriodeConstructionId: undefined,
|
|
352
|
-
typeIsolationExpected: 2
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
label: 'plancher bas avec isolation inconnue, adjacence garage et période isolation 1975',
|
|
356
|
-
enumTypeIsolationId: 1,
|
|
357
|
-
enumPeriodIsolationId: 3,
|
|
358
|
-
enumTypeAdjacenceId: 8,
|
|
359
|
-
enumPeriodeConstructionId: undefined,
|
|
360
|
-
typeIsolationExpected: 4
|
|
361
|
-
},
|
|
362
|
-
{
|
|
363
|
-
label: 'plancher bas avec isolation de type "isolé mais type d\'isolation inconnu"',
|
|
364
|
-
enumTypeIsolationId: 9,
|
|
365
|
-
enumPeriodIsolationId: 1,
|
|
366
|
-
enumPeriodeConstructionId: undefined,
|
|
367
|
-
typeIsolationExpected: 4
|
|
368
|
-
},
|
|
369
|
-
{
|
|
370
|
-
label: 'plancher bas avec isolation iti+ite',
|
|
371
|
-
enumTypeIsolationId: 6,
|
|
372
|
-
enumPeriodIsolationId: 1,
|
|
373
|
-
enumPeriodeConstructionId: undefined,
|
|
374
|
-
typeIsolationExpected: 6
|
|
375
|
-
}
|
|
376
|
-
])(
|
|
377
|
-
"Récupération du type d'isolation pour $label",
|
|
378
|
-
({
|
|
379
|
-
enumTypeIsolationId,
|
|
380
|
-
enumPeriodIsolationId = undefined,
|
|
381
|
-
enumTypeAdjacenceId = undefined,
|
|
382
|
-
enumPeriodeConstructionId = undefined,
|
|
383
|
-
typeIsolationExpected
|
|
384
|
-
}) => {
|
|
385
|
-
/**
|
|
386
|
-
* @type {PlancherBasDE}
|
|
387
|
-
*/
|
|
388
|
-
let plancherBasDE = {
|
|
389
|
-
enum_type_isolation_id: enumTypeIsolationId,
|
|
390
|
-
enum_type_adjacence_id: enumTypeAdjacenceId,
|
|
391
|
-
enum_periode_isolation_id: enumPeriodIsolationId
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
/**
|
|
395
|
-
* @type {Contexte}
|
|
396
|
-
*/
|
|
397
|
-
const ctx = { enumPeriodeConstructionId };
|
|
398
|
-
|
|
399
|
-
expect(service.typeIsolation(ctx, plancherBasDE)).toBe(typeIsolationExpected);
|
|
400
|
-
}
|
|
401
|
-
);
|
|
402
|
-
|
|
403
|
-
describeIntegration("Test d'intégration de plancher bas", () => {
|
|
404
|
-
test.each(corpus)('vérification des DI des pb pour dpe %s', (ademeId) => {
|
|
405
|
-
/**
|
|
406
|
-
* @type {Dpe}
|
|
407
|
-
*/
|
|
408
|
-
let dpeRequest = getAdemeFileJson(ademeId);
|
|
409
|
-
dpeRequest = normalizerService.normalize(dpeRequest);
|
|
410
|
-
|
|
411
|
-
/** @type {Contexte} */
|
|
412
|
-
const ctx = contexteBuilder.fromDpe(dpeRequest);
|
|
413
|
-
|
|
414
|
-
/** @type {PlancherBas[]} */
|
|
415
|
-
const pbs = dpeRequest.logement.enveloppe.plancher_bas_collection?.plancher_bas || [];
|
|
416
|
-
|
|
417
|
-
pbs.forEach((pb) => {
|
|
418
|
-
const di = service.execute(ctx, pb.donnee_entree, pbs);
|
|
419
|
-
|
|
420
|
-
if (pb.donnee_intermediaire) {
|
|
421
|
-
expect(di.upb0).toBeCloseTo(pb.donnee_intermediaire.upb0, 2);
|
|
422
|
-
} else {
|
|
423
|
-
expect(di.upb0).toBeUndefined();
|
|
424
|
-
}
|
|
425
|
-
expect(di.upb_final).toBeCloseTo(pb.donnee_intermediaire.upb_final, 2);
|
|
426
|
-
expect(di.b).toBeCloseTo(pb.donnee_intermediaire.b, 2);
|
|
427
|
-
});
|
|
428
|
-
});
|
|
429
|
-
});
|
|
430
|
-
});
|