fix: oprava pádu při zdvojeném menu
CI / Generate TypeScript types (push) Successful in 13s
CI / Server unit tests (push) Successful in 23s
CI / Build server (push) Successful in 26s
CI / Build client (push) Successful in 38s
CI / Playwright E2E tests (push) Successful in 1m29s
CI / Build and push Docker image (push) Successful in 43s
CI / Notify (push) Successful in 2s
CI / Generate TypeScript types (push) Successful in 13s
CI / Server unit tests (push) Successful in 23s
CI / Build server (push) Successful in 26s
CI / Build client (push) Successful in 38s
CI / Playwright E2E tests (push) Successful in 1m29s
CI / Build and push Docker image (push) Successful in 43s
CI / Notify (push) Successful in 2s
This commit is contained in:
3 files changed
+102
-3
No files matched your search
@@ -0,0 +1,53 @@
|
||||
import { pruneStaleFoodChoices } from '../service';
|
||||
import { LunchChoices, RestaurantDayMenuMap } from '../../../types/gen/types.gen';
|
||||
|
||||
// Pomocná fabrika menu s daným počtem jídel pro TECHTOWER.
|
||||
const menusWithTechTowerFoods = (count: number): RestaurantDayMenuMap => ({
|
||||
TECHTOWER: {
|
||||
lastUpdate: 0,
|
||||
closed: false,
|
||||
food: Array.from({ length: count }, (_, i) => ({ name: `Jídlo ${i}` })),
|
||||
},
|
||||
} as unknown as RestaurantDayMenuMap);
|
||||
|
||||
describe('pruneStaleFoodChoices', () => {
|
||||
test('odebere index jídla, který v aktuálním menu již neexistuje', () => {
|
||||
const choices: LunchChoices = {
|
||||
TECHTOWER: { alice: { selectedFoods: [0, 9] } },
|
||||
};
|
||||
const mutated = pruneStaleFoodChoices(choices, menusWithTechTowerFoods(5));
|
||||
expect(mutated).toBe(true);
|
||||
expect(choices.TECHTOWER!.alice.selectedFoods).toEqual([0]);
|
||||
});
|
||||
|
||||
test('nechá platné indexy beze změny a vrátí false', () => {
|
||||
const choices: LunchChoices = {
|
||||
TECHTOWER: { alice: { selectedFoods: [0, 4] } },
|
||||
};
|
||||
const mutated = pruneStaleFoodChoices(choices, menusWithTechTowerFoods(5));
|
||||
expect(mutated).toBe(false);
|
||||
expect(choices.TECHTOWER!.alice.selectedFoods).toEqual([0, 4]);
|
||||
});
|
||||
|
||||
test('u prázdného menu (zavřeno / neúspěšné načtení) volby nemaže', () => {
|
||||
const choices: LunchChoices = {
|
||||
TECHTOWER: { alice: { selectedFoods: [3] } },
|
||||
};
|
||||
const mutated = pruneStaleFoodChoices(choices, menusWithTechTowerFoods(0));
|
||||
expect(mutated).toBe(false);
|
||||
expect(choices.TECHTOWER!.alice.selectedFoods).toEqual([3]);
|
||||
});
|
||||
|
||||
test('očistí volby více uživatelů najednou', () => {
|
||||
const choices: LunchChoices = {
|
||||
TECHTOWER: {
|
||||
alice: { selectedFoods: [7] },
|
||||
bob: { selectedFoods: [1, 2] },
|
||||
},
|
||||
};
|
||||
const mutated = pruneStaleFoodChoices(choices, menusWithTechTowerFoods(5));
|
||||
expect(mutated).toBe(true);
|
||||
expect(choices.TECHTOWER!.alice.selectedFoods).toEqual([]);
|
||||
expect(choices.TECHTOWER!.bob.selectedFoods).toEqual([1, 2]);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user