## Pre-commit hook
- Add .husky/pre-commit at repo root: runs `cd frontend && npm run lint`
- Update prepare script in package.json to auto-configure git hooks path
on npm install (git -C .. config core.hooksPath .husky)
- Add lint step to CI unit-tests job so it catches issues before tests run
- Add generated dirs to .prettierignore (paraglide_bak*, test-results, .auth)
- Add src/lib/paraglide_bak* to .gitignore so ESLint can ignore them
## ESLint fixes (all pre-existing)
- Disable svelte/no-navigation-without-resolve: false positive in SvelteKit
(rule targets Svelte 5 standalone routing, not SvelteKit <a href>)
- Fix svelte/require-each-key: add (item.id)/(item) keys to all {#each} blocks
across 10 files — improves Svelte reconciliation performance
- Fix svelte/prefer-writable-derived in PersonTypeahead: $state+$effect → $derived
- Fix svelte/prefer-svelte-reactivity: URLSearchParams → SvelteURLSearchParams,
Map → SvelteMap (enables Svelte reactive tracking)
- Fix @typescript-eslint/no-unused-vars: remove dead imports/variables
## Prettier
- Run npm run format to bring all source files in line with .prettierrc
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { sortDocumentsByDate } from './sort';
|
|
|
|
const doc = (id: string, documentDate: string | null) =>
|
|
({ id, documentDate }) as { id: string; documentDate: string | null };
|
|
|
|
describe('sortDocumentsByDate', () => {
|
|
it('sorts DESC by default — newest first', () => {
|
|
const docs = [doc('a', '1920-01-01'), doc('b', '1950-06-15'), doc('c', '1935-03-10')];
|
|
const result = sortDocumentsByDate(docs, 'DESC');
|
|
expect(result.map((d) => d.id)).toEqual(['b', 'c', 'a']);
|
|
});
|
|
|
|
it('sorts ASC — oldest first', () => {
|
|
const docs = [doc('a', '1920-01-01'), doc('b', '1950-06-15'), doc('c', '1935-03-10')];
|
|
const result = sortDocumentsByDate(docs, 'ASC');
|
|
expect(result.map((d) => d.id)).toEqual(['a', 'c', 'b']);
|
|
});
|
|
|
|
it('places documents without a date last in DESC', () => {
|
|
const docs = [doc('a', null), doc('b', '1940-01-01'), doc('c', null)];
|
|
const result = sortDocumentsByDate(docs, 'DESC');
|
|
expect(result[0].id).toBe('b');
|
|
expect(result.slice(1).map((d) => d.id)).toContain('a');
|
|
expect(result.slice(1).map((d) => d.id)).toContain('c');
|
|
});
|
|
|
|
it('places documents without a date last in ASC', () => {
|
|
const docs = [doc('a', null), doc('b', '1940-01-01'), doc('c', null)];
|
|
const result = sortDocumentsByDate(docs, 'ASC');
|
|
expect(result[0].id).toBe('b');
|
|
});
|
|
|
|
it('does not mutate the original array', () => {
|
|
const docs = [doc('a', '1950-01-01'), doc('b', '1920-01-01')];
|
|
const original = [...docs];
|
|
sortDocumentsByDate(docs, 'ASC');
|
|
expect(docs).toEqual(original);
|
|
});
|
|
|
|
it('returns an empty array unchanged', () => {
|
|
expect(sortDocumentsByDate([], 'DESC')).toEqual([]);
|
|
});
|
|
});
|