feat(#206): backend cartes rose soin_enfant (3 sous-types, instant T, correction 24h)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -281,4 +281,96 @@ describe('CardsService (#194)', () => {
|
||||
);
|
||||
expect(res.statut).toBe(CardInstanceStatutType.TRAITEE);
|
||||
});
|
||||
|
||||
it('AM crée soin_enfant (fievre) → motif dérivé + payload structuré', async () => {
|
||||
typesRepo.findOne.mockResolvedValue({
|
||||
code: 'soin_enfant',
|
||||
system: true,
|
||||
emitter_roles: [RoleType.ASSISTANTE_MATERNELLE],
|
||||
response_mode: CardResponseModeType.ACK,
|
||||
retention_days: 7,
|
||||
audience_resolver: 'couple_parents',
|
||||
});
|
||||
evenementsService.creer.mockResolvedValue({ id: 'ev-soin' });
|
||||
cardsRepo.create.mockImplementation((c) => ({ ...c, id: 'card-soin' }));
|
||||
cardsRepo.save.mockResolvedValue({ id: 'card-soin' });
|
||||
cardsRepo.findOne.mockResolvedValue({
|
||||
id: 'card-soin',
|
||||
type_code: 'soin_enfant',
|
||||
statut: CardInstanceStatutType.OUVERTE,
|
||||
payload: {
|
||||
date_debut: '2026-10-28',
|
||||
date_fin: '2026-10-28',
|
||||
motif: '38,5 °C à 14:30 (Médicament : Doliprane)',
|
||||
sous_type: 'fievre',
|
||||
heure_releve: '14:30',
|
||||
temperature_c: 38.5,
|
||||
medicament_donne: 'Doliprane',
|
||||
},
|
||||
type: { response_mode: CardResponseModeType.ACK },
|
||||
});
|
||||
|
||||
const res = await service.creer('am-1', RoleType.ASSISTANTE_MATERNELLE, {
|
||||
type_code: 'soin_enfant',
|
||||
id_placement: 'pl-1',
|
||||
date_debut: '2026-10-28',
|
||||
date_fin: '2026-10-28',
|
||||
payload: {
|
||||
sous_type: 'fievre',
|
||||
heure_releve: '14:30',
|
||||
temperature_c: 38.5,
|
||||
medicament_donne: 'Doliprane',
|
||||
},
|
||||
});
|
||||
|
||||
expect(evenementsService.creer).toHaveBeenCalledWith(
|
||||
'am-1',
|
||||
RoleType.ASSISTANTE_MATERNELLE,
|
||||
expect.objectContaining({
|
||||
type: TypeEvenementAgendaType.SOIN_ENFANT,
|
||||
motif: '38,5 °C à 14:30 (Médicament : Doliprane)',
|
||||
}),
|
||||
);
|
||||
expect(res.payload.motif).toBe('38,5 °C à 14:30 (Médicament : Doliprane)');
|
||||
});
|
||||
|
||||
it('AM corrige soin_enfant dans les 24h → historique + re-ack', async () => {
|
||||
const creeLe = new Date();
|
||||
cardsRepo.findOne.mockResolvedValue({
|
||||
id: 'card-soin',
|
||||
type_code: 'soin_enfant',
|
||||
id_placement: 'pl-1',
|
||||
id_evenement: 'ev-soin',
|
||||
cree_par: 'am-1',
|
||||
cree_le: creeLe,
|
||||
statut: CardInstanceStatutType.TRAITEE, // déjà acquitté
|
||||
payload: {
|
||||
date_debut: '2026-10-28',
|
||||
date_fin: '2026-10-28',
|
||||
sous_type: 'fievre',
|
||||
heure_releve: '14:30',
|
||||
temperature_c: 38.5,
|
||||
},
|
||||
type: { retention_days: 7 },
|
||||
});
|
||||
evenementsService.maj.mockResolvedValue({});
|
||||
|
||||
await service.majEnAttente('am-1', RoleType.ASSISTANTE_MATERNELLE, 'card-soin', {
|
||||
date_debut: '2026-10-28',
|
||||
date_fin: '2026-10-28',
|
||||
payload: {
|
||||
sous_type: 'fievre',
|
||||
heure_releve: '14:30',
|
||||
temperature_c: 37.5, // correction
|
||||
},
|
||||
});
|
||||
|
||||
expect(cardsRepo.manager.query).toHaveBeenCalledWith(
|
||||
expect.stringContaining('UPDATE card_instances'),
|
||||
expect.arrayContaining([
|
||||
CardInstanceStatutType.OUVERTE, // repasse ouverte
|
||||
expect.stringContaining('37,5'), // nouveau payload stringifié
|
||||
]),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user