From 8ed66ae82f3e0e896c5317a90c76e7e6589dde66 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 18 Apr 2026 14:05:09 +0200 Subject: [PATCH] feat(frontend): add countRequiredFilled utility with all 8 field-combination tests Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/lib/utils/requiredFields.test.ts | 36 +++++++++++++++++++ frontend/src/lib/utils/requiredFields.ts | 3 ++ 2 files changed, 39 insertions(+) create mode 100644 frontend/src/lib/utils/requiredFields.test.ts create mode 100644 frontend/src/lib/utils/requiredFields.ts diff --git a/frontend/src/lib/utils/requiredFields.test.ts b/frontend/src/lib/utils/requiredFields.test.ts new file mode 100644 index 00000000..427dbefc --- /dev/null +++ b/frontend/src/lib/utils/requiredFields.test.ts @@ -0,0 +1,36 @@ +import { describe, it, expect } from 'vitest'; +import { countRequiredFilled } from './requiredFields'; + +describe('countRequiredFilled', () => { + it('returns 0 when all three fields are empty', () => { + expect(countRequiredFilled('', '', '')).toBe(0); + }); + + it('returns 1 when only title is set', () => { + expect(countRequiredFilled('Ein Brief', '', '')).toBe(1); + }); + + it('returns 1 when only dateIso is set', () => { + expect(countRequiredFilled('', '1920-05-01', '')).toBe(1); + }); + + it('returns 1 when only senderId is set', () => { + expect(countRequiredFilled('', '', 'person-uuid')).toBe(1); + }); + + it('returns 2 when title and dateIso are set', () => { + expect(countRequiredFilled('Ein Brief', '1920-05-01', '')).toBe(2); + }); + + it('returns 2 when title and senderId are set', () => { + expect(countRequiredFilled('Ein Brief', '', 'person-uuid')).toBe(2); + }); + + it('returns 2 when dateIso and senderId are set', () => { + expect(countRequiredFilled('', '1920-05-01', 'person-uuid')).toBe(2); + }); + + it('returns 3 when all three fields are set', () => { + expect(countRequiredFilled('Ein Brief', '1920-05-01', 'person-uuid')).toBe(3); + }); +}); diff --git a/frontend/src/lib/utils/requiredFields.ts b/frontend/src/lib/utils/requiredFields.ts new file mode 100644 index 00000000..58b7076d --- /dev/null +++ b/frontend/src/lib/utils/requiredFields.ts @@ -0,0 +1,3 @@ +export function countRequiredFilled(title: string, dateIso: string, senderId: string): number { + return [title, dateIso, senderId].filter(Boolean).length; +}