From fa9daa4fcd0385da1ec30d2bf253af59a24dbe55 Mon Sep 17 00:00:00 2001
From: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com>
Date: Fri, 15 May 2026 01:11:29 +0200
Subject: [PATCH] test(jobs): JobCard breadcrumb + datum-fallback tests
---
__tests__/components/jobs/job-card.test.tsx | 85 +++++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 __tests__/components/jobs/job-card.test.tsx
diff --git a/__tests__/components/jobs/job-card.test.tsx b/__tests__/components/jobs/job-card.test.tsx
new file mode 100644
index 0000000..09bc3a2
--- /dev/null
+++ b/__tests__/components/jobs/job-card.test.tsx
@@ -0,0 +1,85 @@
+// @vitest-environment jsdom
+import { describe, it, expect } from 'vitest'
+import { render, screen } from '@testing-library/react'
+import '@testing-library/jest-dom'
+import JobCard from '@/components/jobs/job-card'
+
+const BASE_PROPS = {
+ id: 'job-1',
+ kind: 'TASK_IMPLEMENTATION' as const,
+ status: 'RUNNING' as const,
+ productName: 'Scrum4Me',
+ productCode: 'S4M',
+ pbiCode: 'PBI-1',
+ storyCode: 'ST-1',
+ createdAt: new Date('2026-01-01T10:00:00Z'),
+}
+
+describe('JobCard breadcrumb', () => {
+ it('TASK-job toont productCode, pbiCode en storyCode in de breadcrumb', () => {
+ render()
+ const breadcrumb = screen.getByText('S4M PBI-1 ST-1')
+ expect(breadcrumb).toBeInTheDocument()
+ })
+
+ it('TASK-job zonder productCode valt terug op productName in de breadcrumb', () => {
+ render()
+ expect(screen.getByText('Scrum4Me PBI-1 ST-1')).toBeInTheDocument()
+ })
+
+ it('TASK-job laat ontbrekende codes weg uit de breadcrumb', () => {
+ render()
+ expect(screen.getByText('S4M')).toBeInTheDocument()
+ })
+
+ it('GRILL-job toont productCode en ideaCode', () => {
+ render(
+ ,
+ )
+ expect(screen.getByText('S4M IDEA-5')).toBeInTheDocument()
+ })
+
+ it('SPRINT-job toont productCode en sprintCode', () => {
+ render(
+ ,
+ )
+ expect(screen.getByText('S4M SP-3')).toBeInTheDocument()
+ })
+})
+
+describe('JobCard datumweergave', () => {
+ it('toont finishedAt als die beschikbaar is', () => {
+ const finishedAt = new Date('2026-03-15T14:30:00Z')
+ render()
+ const formatted = finishedAt.toLocaleString('nl-NL', { dateStyle: 'short', timeStyle: 'short' })
+ expect(screen.getByText(formatted)).toBeInTheDocument()
+ })
+
+ it('toont startedAt als finishedAt ontbreekt', () => {
+ const startedAt = new Date('2026-03-10T09:00:00Z')
+ render()
+ const formatted = startedAt.toLocaleString('nl-NL', { dateStyle: 'short', timeStyle: 'short' })
+ expect(screen.getByText(formatted)).toBeInTheDocument()
+ })
+
+ it('toont createdAt als zowel finishedAt als startedAt ontbreken', () => {
+ const createdAt = new Date('2026-01-01T10:00:00Z')
+ render()
+ const formatted = createdAt.toLocaleString('nl-NL', { dateStyle: 'short', timeStyle: 'short' })
+ expect(screen.getByText(formatted)).toBeInTheDocument()
+ })
+})