fix(front) : pesée horodatée en date+heure, ré-horodatée à la validation (ERP-189)
Le champ Date des blocs de pesée passe de MalioDate (date seule, heure perdue -> 00:00:00 en base) à MalioDateTime (date + heure). Défaut = instant courant (nowIsoDateTime) et ré-horodatage à la validation d'une pesée (bascule ou manuelle) via applyReading : la date du ticket reflète le moment réel de la pesée. L'hydratation en modification conserve l'heure du back (TIMESTAMP).
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
import { describe, it, expect, vi } from 'vitest'
|
||||
|
||||
// `todayIso` est importé par le composable : on le stubbe pour une date déterministe.
|
||||
vi.mock('~/shared/utils/date', () => ({ todayIso: () => '2026-06-22' }))
|
||||
// `nowIsoDateTime` est importé par le composable : on le stubbe pour un instant déterministe.
|
||||
vi.mock('~/shared/utils/date', () => ({ nowIsoDateTime: () => '2026-06-22T08:30:00' }))
|
||||
|
||||
const { useWeighingTicketForm } = await import('../useWeighingTicketForm')
|
||||
|
||||
describe('useWeighingTicketForm', () => {
|
||||
it('initialise les 2 blocs à la date du jour (RG-5.07), sans poids ni DSD', () => {
|
||||
it('initialise les 2 blocs à la date/heure courante (RG-5.07), sans poids ni DSD', () => {
|
||||
const form = useWeighingTicketForm()
|
||||
expect(form.empty.date).toBe('2026-06-22')
|
||||
expect(form.full.date).toBe('2026-06-22')
|
||||
expect(form.empty.date).toBe('2026-06-22T08:30:00')
|
||||
expect(form.full.date).toBe('2026-06-22T08:30:00')
|
||||
expect(form.empty.weight).toBeNull()
|
||||
expect(form.empty.dsd).toBeNull()
|
||||
expect(form.counterpartyType.value).toBeNull()
|
||||
@@ -25,8 +25,8 @@ describe('useWeighingTicketForm', () => {
|
||||
expect(payload).not.toHaveProperty('counterpartyType')
|
||||
expect(payload).not.toHaveProperty('immatriculation')
|
||||
expect(payload).not.toHaveProperty('emptyWeight')
|
||||
// Les non-null restent : date du jour + booléen Tout format.
|
||||
expect(payload.emptyDate).toBe('2026-06-22')
|
||||
// Les non-null restent : date/heure courante + booléen Tout format.
|
||||
expect(payload.emptyDate).toBe('2026-06-22T08:30:00')
|
||||
expect(payload.plateFreeFormat).toBe(false)
|
||||
})
|
||||
|
||||
@@ -96,9 +96,13 @@ describe('useWeighingTicketForm', () => {
|
||||
})
|
||||
|
||||
// ── Application d'une lecture de pesée ────────────────────────────────────
|
||||
it('applyReading remplit poids / DSD / mode du bloc visé', () => {
|
||||
it('applyReading remplit poids / DSD / mode et ré-horodate le bloc à l\'instant de la pesée', () => {
|
||||
const form = useWeighingTicketForm()
|
||||
// Date périmée (ouverture du formulaire bien avant la pesée).
|
||||
form.empty.date = '2020-01-01T00:00:00'
|
||||
form.applyReading(form.empty, { weight: 7150, dsd: 1, mode: 'AUTO' })
|
||||
// La pesée validée ré-horodate le bloc à maintenant (stub 2026-06-22T08:30:00).
|
||||
expect(form.empty.date).toBe('2026-06-22T08:30:00')
|
||||
expect(form.empty.weight).toBe(7150)
|
||||
expect(form.empty.dsd).toBe(1)
|
||||
expect(form.empty.mode).toBe('AUTO')
|
||||
@@ -129,7 +133,7 @@ describe('useWeighingTicketForm', () => {
|
||||
})
|
||||
|
||||
// ── Pré-remplissage (écran Modification, ERP-190) ─────────────────────────
|
||||
it('hydrate pré-remplit l\'état depuis le détail (dates ISO ramenées à YYYY-MM-DD)', () => {
|
||||
it('hydrate pré-remplit l\'état depuis le détail (datetime ISO ramené en local, heure conservée)', () => {
|
||||
const form = useWeighingTicketForm()
|
||||
form.hydrate({
|
||||
id: 9,
|
||||
@@ -152,9 +156,9 @@ describe('useWeighingTicketForm', () => {
|
||||
expect(form.counterpartyField.value).toBe('client')
|
||||
expect(form.clientIri.value).toBe('/api/clients/629')
|
||||
expect(form.immatriculation.value).toBe('AB-123-CD')
|
||||
// Date datetime back -> date seule pour MalioDate.
|
||||
expect(form.empty.date).toBe('2026-06-17')
|
||||
expect(form.full.date).toBe('2026-06-17')
|
||||
// Datetime back (avec fuseau) -> local sans fuseau, heure conservée pour MalioDateTime.
|
||||
expect(form.empty.date).toBe('2026-06-17T09:00:00')
|
||||
expect(form.full.date).toBe('2026-06-17T09:12:00')
|
||||
expect(form.empty.weight).toBe(7150)
|
||||
expect(form.full.weight).toBe(14300)
|
||||
})
|
||||
@@ -165,8 +169,8 @@ describe('useWeighingTicketForm', () => {
|
||||
expect(form.otherLabel.value).toBe('Reprise')
|
||||
expect(form.supplierIri.value).toBeNull()
|
||||
expect(form.plateFreeFormat.value).toBe(false)
|
||||
// Pas de date back -> repli sur le jour (stub 2026-06-22).
|
||||
expect(form.empty.date).toBe('2026-06-22')
|
||||
// Pas de date back -> repli sur l'instant courant (stub 2026-06-22T08:30:00).
|
||||
expect(form.empty.date).toBe('2026-06-22T08:30:00')
|
||||
expect(form.empty.weight).toBeNull()
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user