feat: možnost editace existujících podniků u objednávání
This commit is contained in:
7 files changed
+327
-51
No files matched your search
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user