refactoring, numbering plan
This commit is contained in:
1 parent
b5279434b2
commit
3b04039aa9
47 files changed
+3485
-953
No files matched your search
@@ -0,0 +1,83 @@
|
||||
import { expect, test } from '@playwright/test';
|
||||
import {
|
||||
DEFAULT_EXHIBIT_PREFIX,
|
||||
MAX_EXHIBIT_PREFIX_LENGTH,
|
||||
MAX_EXHIBIT_START_NUMBER,
|
||||
MIN_EXHIBIT_START_NUMBER,
|
||||
buildExhibitFileName,
|
||||
buildExhibitLabel,
|
||||
buildExhibitPrefixSlug,
|
||||
getExhibitNumberWidth,
|
||||
normalizeExhibitPrefix,
|
||||
normalizeExhibitStartNumber
|
||||
} from '../../src/lib/exhibit-naming';
|
||||
|
||||
test('the prefix is trimmed and capped', () => {
|
||||
expect(normalizeExhibitPrefix(' Anlage K ')).toBe('Anlage K');
|
||||
expect(normalizeExhibitPrefix('')).toBe('');
|
||||
expect(normalizeExhibitPrefix('A'.repeat(MAX_EXHIBIT_PREFIX_LENGTH + 10))).toHaveLength(
|
||||
MAX_EXHIBIT_PREFIX_LENGTH
|
||||
);
|
||||
});
|
||||
|
||||
test('labels use one space and never pad the number', () => {
|
||||
expect(buildExhibitLabel('Anlage K', 6)).toBe('Anlage K 6');
|
||||
expect(buildExhibitLabel(' Anlage ', 1)).toBe('Anlage 1');
|
||||
expect(buildExhibitLabel('Anlage', 98)).toBe('Anlage 98');
|
||||
});
|
||||
|
||||
test('the padding width follows the highest assigned number', () => {
|
||||
expect(getExhibitNumberWidth(9)).toBe(2);
|
||||
expect(getExhibitNumberWidth(99)).toBe(2);
|
||||
expect(getExhibitNumberWidth(100)).toBe(3);
|
||||
expect(getExhibitNumberWidth(1000)).toBe(4);
|
||||
});
|
||||
|
||||
test('file names prefix the number and keep the original base name', () => {
|
||||
expect(
|
||||
buildExhibitFileName({
|
||||
prefix: 'Anlage K',
|
||||
number: 6,
|
||||
highestNumber: 8,
|
||||
originalName: 'Klageschrift.pdf'
|
||||
})
|
||||
).toBe('Anlage_K_06_Klageschrift.pdf');
|
||||
|
||||
expect(
|
||||
buildExhibitFileName({
|
||||
prefix: 'Anlage K',
|
||||
number: 98,
|
||||
highestNumber: 100,
|
||||
originalName: 'Anlage.PDF'
|
||||
})
|
||||
).toBe('Anlage_K_098_Anlage.pdf');
|
||||
});
|
||||
|
||||
test('unsafe characters never reach the file name', () => {
|
||||
expect(
|
||||
buildExhibitFileName({
|
||||
prefix: 'Anlage K/1',
|
||||
number: 1,
|
||||
highestNumber: 1,
|
||||
originalName: 'a:b*c?.pdf'
|
||||
})
|
||||
).toBe('Anlage_K1_01_abc.pdf');
|
||||
});
|
||||
|
||||
test('an empty prefix falls back to the default slug', () => {
|
||||
expect(buildExhibitPrefixSlug(' ')).toBe(DEFAULT_EXHIBIT_PREFIX);
|
||||
expect(
|
||||
buildExhibitFileName({ prefix: '', number: 3, highestNumber: 3, originalName: 'x.pdf' })
|
||||
).toBe('Anlage_03_x.pdf');
|
||||
});
|
||||
|
||||
test('the start number is clamped and survives an empty field', () => {
|
||||
expect(normalizeExhibitStartNumber(1)).toBe(1);
|
||||
expect(normalizeExhibitStartNumber(0)).toBe(MIN_EXHIBIT_START_NUMBER);
|
||||
expect(normalizeExhibitStartNumber(-5)).toBe(MIN_EXHIBIT_START_NUMBER);
|
||||
expect(normalizeExhibitStartNumber(6.6)).toBe(7);
|
||||
expect(normalizeExhibitStartNumber(undefined)).toBe(1);
|
||||
expect(normalizeExhibitStartNumber(null)).toBe(1);
|
||||
expect(normalizeExhibitStartNumber('')).toBe(1);
|
||||
expect(normalizeExhibitStartNumber(1_000_000)).toBe(MAX_EXHIBIT_START_NUMBER);
|
||||
});
|
||||
Reference in new issue
Block a user