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 },