b05f6b9da0
Jenkins Production Deployment
Co-authored-by: Patrick Müller <mail@pmueller.me> Reviewed-on: #7 Co-authored-by: Patrick Mueller <patrick@mueller-patrick.tech> Co-committed-by: Patrick Mueller <patrick@mueller-patrick.tech>
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import {computeDefaultDeadline, slugBase, slugifyName} from '../../src/models/feedback/admin/events.admin.service';
|
|
|
|
describe('slugifyName', () => {
|
|
it('lowercases and hyphenates', () => {
|
|
expect(slugifyName('Sommerkonzert 2026')).toBe('sommerkonzert-2026');
|
|
});
|
|
|
|
it('transliterates umlauts', () => {
|
|
expect(slugifyName('Frühlingskonzert')).toBe('fruehlingskonzert');
|
|
expect(slugifyName('Weihnachtsgrüße')).toBe('weihnachtsgruesse');
|
|
});
|
|
|
|
it('strips punctuation and collapses separators', () => {
|
|
expect(slugifyName('Konzert: "Klänge & Farben"!')).toBe('konzert-klaenge-farben');
|
|
});
|
|
|
|
it('trims leading and trailing hyphens', () => {
|
|
expect(slugifyName(' -- Herbstkonzert -- ')).toBe('herbstkonzert');
|
|
});
|
|
});
|
|
|
|
describe('slugBase', () => {
|
|
it('appends the concert year when the name does not already carry it', () => {
|
|
expect(slugBase('Sommerkonzert', '2026-08-01')).toBe('sommerkonzert-2026');
|
|
});
|
|
|
|
it('does not double up the year when the name already ends with it', () => {
|
|
expect(slugBase('Adventskonzert 2026', '2026-12-06')).toBe('adventskonzert-2026');
|
|
});
|
|
|
|
it('still appends the year when the name contains a different year', () => {
|
|
expect(slugBase('Jubiläum 2020', '2026-08-01')).toBe('jubilaeum-2020-2026');
|
|
});
|
|
});
|
|
|
|
describe('computeDefaultDeadline', () => {
|
|
it('is 14 days after the event date, at 23:59:59', () => {
|
|
const deadline = computeDefaultDeadline('2026-08-01');
|
|
expect(deadline.getFullYear()).toBe(2026);
|
|
expect(deadline.getMonth()).toBe(7); // August = index 7
|
|
expect(deadline.getDate()).toBe(15);
|
|
expect(deadline.getHours()).toBe(23);
|
|
expect(deadline.getMinutes()).toBe(59);
|
|
expect(deadline.getSeconds()).toBe(59);
|
|
});
|
|
|
|
it('rolls over the month correctly', () => {
|
|
const deadline = computeDefaultDeadline('2026-08-25');
|
|
expect(deadline.getMonth()).toBe(8); // September
|
|
expect(deadline.getDate()).toBe(8);
|
|
});
|
|
|
|
it('rolls over the year correctly', () => {
|
|
const deadline = computeDefaultDeadline('2026-12-25');
|
|
expect(deadline.getFullYear()).toBe(2027);
|
|
expect(deadline.getMonth()).toBe(0); // January
|
|
expect(deadline.getDate()).toBe(8);
|
|
});
|
|
});
|