import { formatDate, getUsersByLocation, parseToken, checkQueryParams, checkBodyParams, getIsWeekend } from '../utils'; describe('formatDate', () => { const d = new Date('2025-01-10'); test('výchozí formát YYYY-MM-DD', () => { expect(formatDate(d)).toBe('2025-01-10'); }); test('vlastní formát DD.MM.YYYY', () => { expect(formatDate(d, 'DD.MM.YYYY')).toBe('10.01.2025'); }); test('nulové doplnění dne a měsíce', () => { expect(formatDate(new Date('2025-03-05'))).toBe('2025-03-05'); }); }); describe('getIsWeekend', () => { test('pondělí není víkend', () => { expect(getIsWeekend(new Date('2025-01-06'))).toBe(false); }); test('pátek není víkend', () => { expect(getIsWeekend(new Date('2025-01-10'))).toBe(false); }); test('sobota je víkend', () => { expect(getIsWeekend(new Date('2025-01-11'))).toBe(true); }); test('neděle je víkend', () => { expect(getIsWeekend(new Date('2025-01-12'))).toBe(true); }); }); describe('getUsersByLocation', () => { const choices = { SLADOVNICKA: { alice: { trusted: false, selectedFoods: [] } }, TECHTOWER: { bob: { trusted: true, selectedFoods: [] } }, } as any; test('vrátí spolužáky ze stejného místa', () => { expect(getUsersByLocation(choices, 'alice')).toEqual(['alice']); }); test('vrátí prázdné pole pro neznámý login', () => { expect(getUsersByLocation(choices, 'charlie')).toEqual([]); }); test('vrátí prázdné pole pro chybějící login', () => { expect(getUsersByLocation(choices, undefined)).toEqual([]); }); }); describe('parseToken', () => { test('vrátí token z Authorization hlavičky', () => { const req = { headers: { authorization: 'Bearer mytoken' } }; expect(parseToken(req)).toBe('mytoken'); }); test('vrátí undefined pro chybějící hlavičku', () => { expect(parseToken({ headers: {} })).toBeUndefined(); }); test('vrátí undefined pro chybějící req', () => { expect(parseToken(undefined)).toBeUndefined(); }); }); describe('checkQueryParams', () => { test('nevyhodí chybu pro přítomné parametry', () => { const req = { query: { date: '2025-01-10', location: 'SLADOVNICKA' } }; expect(() => checkQueryParams(req, ['date', 'location'])).not.toThrow(); }); test('vyhodí chybu pro chybějící parametr', () => { const req = { query: { date: '2025-01-10' } }; expect(() => checkQueryParams(req, ['date', 'location'])).toThrow("'location'"); }); }); describe('checkBodyParams', () => { test('nevyhodí chybu pro přítomné parametry', () => { const req = { body: { login: 'alice' } }; expect(() => checkBodyParams(req, ['login'])).not.toThrow(); }); test('vyhodí chybu pro chybějící parametr', () => { const req = { body: {} }; expect(() => checkBodyParams(req, ['login'])).toThrow("'login'"); }); });