test: rozšíření serverových testů
ci/woodpecker/push/workflow Pipeline failed

This commit is contained in:
2026-04-29 15:42:08 +02:00
parent 1e1e23df80
commit 64d85036fd
29 changed files with 1250 additions and 10 deletions
+47
View File
@@ -0,0 +1,47 @@
import axios from 'axios';
import { generateQr, getQr } from '../qr';
import { resetMemoryStorage } from '../storage/memory';
jest.mock('axios');
const mockedAxios = axios as jest.Mocked<typeof axios>;
const FAKE_IMAGE = Buffer.from('fake-png-data');
beforeEach(() => {
resetMemoryStorage();
jest.resetAllMocks();
mockedAxios.get = jest.fn().mockResolvedValue({ data: FAKE_IMAGE });
});
test('generateQr zavolá Paylibo API se správnými parametry', async () => {
await generateQr('jannovak', '19-2000145399/0800', 'Jan Novák', 149, 'Pizza Margherita', 'test-uuid-1');
expect(mockedAxios.get).toHaveBeenCalledTimes(1);
const [url, config] = (mockedAxios.get as jest.Mock).mock.calls[0];
expect(url).toContain('paylibo.com');
expect(config.params.amount).toBe(149);
expect(config.params.iban).toBeDefined();
});
test('generateQr uloží base64 obrázek do storage', async () => {
await generateQr('jannovak', '19-2000145399/0800', 'Jan Novák', 149, 'Pizza', 'test-uuid-2');
const img = await getQr('jannovak', 'test-uuid-2');
expect(Buffer.isBuffer(img)).toBe(true);
expect(img).toEqual(FAKE_IMAGE);
});
test('generateQr ořeže zprávu delší než 60 znaků', async () => {
const dlouhaZprava = 'Pizza ' + 'x'.repeat(60);
await generateQr('jannovak', '19-2000145399/0800', 'Jan Novák', 149, dlouhaZprava, 'test-uuid-3');
const [, config] = (mockedAxios.get as jest.Mock).mock.calls[0];
expect(config.params.message.length).toBeLessThanOrEqual(60);
});
test('generateQr odstraní hvězdičku ze zprávy', async () => {
await generateQr('jannovak', '19-2000145399/0800', 'Jan Novák', 149, 'Pizza *Margherita*', 'test-uuid-4');
const [, config] = (mockedAxios.get as jest.Mock).mock.calls[0];
expect(config.params.message).not.toContain('*');
});
test('getQr hodí chybu pro neexistující ID', async () => {
await expect(getQr('jannovak', 'neexistuje')).rejects.toThrow('nebyl nalezen');
});