From dc48fb450b22fa67aad1efdbc8c23cc0445f4803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 25 Jun 2026 12:54:32 +0300 Subject: [PATCH] =?UTF-8?q?fix/deals:=20=D1=80=D0=B5=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20=D1=81?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=BA=D0=B8=20=D0=B2=20=D1=88=D0=B0=D0=BF?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=BA=D0=B0=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B8?= =?UTF-8?q?=20V1=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D1=85=D0=B0=D1=80=D0=B4=D0=BA=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=2028=20=D0=BC=D0=B8=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Шапка показывала formatRelative(28) — всегда 28 мин назад у любой сделки. Теперь deal.receivedMinutesAgo. Тест DealDetailHero 13/13. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../js/components/deals/DealDetailHero.vue | 2 +- app/tests/Frontend/DealDetailHero.spec.ts | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/resources/js/components/deals/DealDetailHero.vue b/app/resources/js/components/deals/DealDetailHero.vue index 63fc2e22..4ec29407 100644 --- a/app/resources/js/components/deals/DealDetailHero.vue +++ b/app/resources/js/components/deals/DealDetailHero.vue @@ -43,7 +43,7 @@ function formatRelative(minutes: number): string { · mdi-clock-outline - {{ formatRelative(28) }} + {{ formatRelative(deal.receivedMinutesAgo) }} diff --git a/app/tests/Frontend/DealDetailHero.spec.ts b/app/tests/Frontend/DealDetailHero.spec.ts index 583e0c8e..8c5cba03 100644 --- a/app/tests/Frontend/DealDetailHero.spec.ts +++ b/app/tests/Frontend/DealDetailHero.spec.ts @@ -36,6 +36,25 @@ describe('DealDetailHero — inline status picker (18.05.2026)', () => { expect(w.find('[data-testid="status-chip-trigger"]').exists()).toBe(true); }); + // V1 (UX-аудит 25.06): время было захардкожено formatRelative(28) — шапка всегда + // показывала «28 мин назад». Теперь берём реальное deal.receivedMinutesAgo. + it('показывает реальное время сделки, не захардкоженные 28 мин', () => { + const w = mount(DealDetailHero, { + props: { deal: makeDeal({ receivedMinutesAgo: 3 }), status: statuses[0] }, + global: { plugins: [vuetify] }, + }); + expect(w.text()).toContain('3 мин назад'); + expect(w.text()).not.toContain('28 мин назад'); + }); + + it('реальное время в часах при больших значениях', () => { + const w = mount(DealDetailHero, { + props: { deal: makeDeal({ receivedMinutesAgo: 125 }), status: statuses[0] }, + global: { plugins: [vuetify] }, + }); + expect(w.text()).toContain('2 ч назад'); + }); + it('клик по chip открывает меню (data-testid="status-option-{slug}" появляются)', async () => { const w = mount(DealDetailHero, { props: { deal: makeDeal(), status: statuses[0], allStatuses: statuses },