feat(transport) : modif — onglet Qualimat (actualisation) + certification éditable (déliage Qualimat) (ERP-172)
This commit is contained in:
@@ -975,3 +975,73 @@ describe('useCarrierForm — édition (ERP-170)', () => {
|
||||
expect(form.main.name).toBe('TRANSPORTS ACME')
|
||||
})
|
||||
})
|
||||
|
||||
describe('useCarrierForm — modification : Qualimat + certification (ERP-172)', () => {
|
||||
const QUALIMAT_ROW = {
|
||||
'@id': '/api/qualimat_carriers/42',
|
||||
id: '42',
|
||||
name: 'TRANSPORTS QUALIMAT',
|
||||
address: '1 rue du Port',
|
||||
postalCode: '86000',
|
||||
city: 'Poitiers',
|
||||
validityDate: '2027-01-15',
|
||||
status: 'VALIDE',
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
mockPost.mockReset()
|
||||
mockPatch.mockReset()
|
||||
})
|
||||
|
||||
it('setCertification : quitter QUALIMAT délie la FK qualimatCarrier', () => {
|
||||
const form = useCarrierForm()
|
||||
form.main.qualimatCarrierIri = '/api/qualimat_carriers/42'
|
||||
form.main.certificationType = 'QUALIMAT'
|
||||
|
||||
form.setCertification('GMP_PLUS')
|
||||
|
||||
expect(form.main.certificationType).toBe('GMP_PLUS')
|
||||
expect(form.main.qualimatCarrierIri).toBeNull()
|
||||
})
|
||||
|
||||
it('certificationReadonly : éditable en modification même pour un QUALIMAT', () => {
|
||||
const form = useCarrierForm()
|
||||
form.prefillFrom({
|
||||
'@id': '/api/carriers/7', id: 7, name: 'ACME', certificationType: 'QUALIMAT',
|
||||
qualimatCarrier: { '@id': '/api/qualimat_carriers/42' },
|
||||
})
|
||||
expect(form.isQualimat.value).toBe(true)
|
||||
expect(form.certificationReadonly.value).toBe(false)
|
||||
})
|
||||
|
||||
it('buildMainPayload : en modification, délie le Qualimat (qualimatCarrier: null) sans lien', () => {
|
||||
const form = useCarrierForm()
|
||||
form.prefillFrom({
|
||||
'@id': '/api/carriers/7', id: 7, name: 'ACME', certificationType: 'QUALIMAT',
|
||||
qualimatCarrier: { '@id': '/api/qualimat_carriers/42' },
|
||||
})
|
||||
form.setCertification('GMP_PLUS')
|
||||
|
||||
expect(form.buildMainPayload()).toMatchObject({ certificationType: 'GMP_PLUS', qualimatCarrier: null })
|
||||
})
|
||||
|
||||
it('applyQualimatSelection : en modification, conserve l\'adresse existante (PATCH nom/certif/FK)', async () => {
|
||||
mockPatch.mockResolvedValueOnce({})
|
||||
const form = useCarrierForm()
|
||||
form.prefillFrom({
|
||||
'@id': '/api/carriers/7', id: 7, name: 'OLD', certificationType: 'GMP_PLUS',
|
||||
address: { '@id': '/api/carrier_addresses/3', id: 3, city: 'Poitiers', street: 'rue A' },
|
||||
})
|
||||
const addressBefore = { ...form.address.value }
|
||||
|
||||
const ok = await form.applyQualimatSelection(QUALIMAT_ROW)
|
||||
|
||||
expect(ok).toBe(true)
|
||||
// Décision « conserver » (ERP-172) : l'adresse n'est pas réécrite en modification.
|
||||
expect(form.address.value).toEqual(addressBefore)
|
||||
// Nom + certification + FK actualisés via PATCH.
|
||||
expect(form.main.name).toBe('TRANSPORTS QUALIMAT')
|
||||
expect(form.main.certificationType).toBe('QUALIMAT')
|
||||
expect(form.main.qualimatCarrierIri).toBe('/api/qualimat_carriers/42')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user