feat: možnost editace existujících podniků u objednávání

This commit is contained in:
mates committed 2026-08-25 11:43:35 +02:00
1 parent ce051447e6
commit 6f6567a2a9
7 files changed
+327 -51

No files matched your search

+77 -1
View File
@@ -1,6 +1,6 @@
import { resetMemoryStorage } from '../storage/memory';
import getStorage from '../storage';
import { getStores, addStore, removeStore } from '../stores';
import { getStores, addStore, updateStore, removeStore } from '../stores';
const ADMIN_PW = 'testadmin';
@@ -113,6 +113,82 @@ describe('addStore', () => {
});
});
describe('updateStore', () => {
const WOLT_URL = 'https://wolt.com/bistro';
const BOLT_URL = 'https://food.bolt.eu/bistro';
beforeEach(async () => {
await addStore('Bistro', ADMIN_PW, [WOLT_URL]);
});
test('přidá další URL k existujícímu obchodu', async () => {
const stores = await updateStore('Bistro', ADMIN_PW, undefined, [WOLT_URL, BOLT_URL]);
expect(stores).toContainEqual({ name: 'Bistro', urls: [WOLT_URL, BOLT_URL] });
});
test('přejmenuje obchod a zachová URL', async () => {
const stores = await updateStore('Bistro', ADMIN_PW, ' Bistro U Nás ');
expect(stores).toContainEqual({ name: 'Bistro U Nás', urls: [WOLT_URL] });
});
test('prázdné pole URL odstraní všechny URL', async () => {
const stores = await updateStore('Bistro', ADMIN_PW, undefined, []);
expect(stores).toContainEqual({ name: 'Bistro' });
});
test('bez předaných URL zůstanou URL nezměněné', async () => {
const stores = await updateStore('Bistro', ADMIN_PW, 'Bistro 2');
expect(stores).toContainEqual({ name: 'Bistro 2', urls: [WOLT_URL] });
});
test('zachová pozici obchodu v seznamu', async () => {
await addStore('KFC', ADMIN_PW);
const stores = await updateStore('Bistro', ADMIN_PW, 'Bistro 2');
expect(names(stores)).toEqual(['Bistro 2', 'KFC']);
});
test('funguje case-insensitive dle názvu', async () => {
const stores = await updateStore('BISTRO', ADMIN_PW, undefined, [BOLT_URL]);
expect(stores).toContainEqual({ name: 'Bistro', urls: [BOLT_URL] });
});
test('ponechání stejného názvu není bráno jako duplikát', async () => {
const stores = await updateStore('Bistro', ADMIN_PW, 'bistro');
expect(names(stores)).toEqual(['bistro']);
});
test('odmítne název kolidující s jiným obchodem', async () => {
await addStore('KFC', ADMIN_PW);
await expect(updateStore('Bistro', ADMIN_PW, 'kfc')).rejects.toThrow('existuje');
});
test('odmítne prázdný název', async () => {
await expect(updateStore('Bistro', ADMIN_PW, ' ')).rejects.toThrow('prázdný');
});
test('odmítne nevalidní URL', async () => {
await expect(updateStore('Bistro', ADMIN_PW, undefined, ['javascript:alert(1)'])).rejects.toThrow('http');
});
test('vyhodí chybu u neexistujícího obchodu', async () => {
await expect(updateStore('Neexistuje', ADMIN_PW, 'Nový')).rejects.toThrow('nebyl nalezen');
});
test('vyhodí UNAUTHORIZED s nesprávným heslem', async () => {
await expect(updateStore('Bistro', 'spatne', 'Hacknuto')).rejects.toThrow('UNAUTHORIZED');
});
test('vyhodí UNAUTHORIZED pokud ADMIN_PASSWORD není nastaven', async () => {
delete process.env.ADMIN_PASSWORD;
await expect(updateStore('Bistro', '', 'Hacknuto')).rejects.toThrow('UNAUTHORIZED');
});
test('při nesprávném heslu se obchod nezmění', async () => {
await expect(updateStore('Bistro', 'spatne', 'Hacknuto')).rejects.toThrow('UNAUTHORIZED');
expect(names(await getStores())).toEqual(['Bistro']);
});
});
describe('removeStore', () => {
beforeEach(async () => {
await addStore('McDonald\'s', ADMIN_PW);