fix: oprava zobrazení ikonky o zaplacení u historických objednávek
CI / Generate TypeScript types (push) Successful in 21s
CI / Server unit tests (push) Successful in 22s
CI / Build server (push) Successful in 35s
CI / Build client (push) Successful in 36s
CI / Playwright E2E tests (push) Successful in 1m18s
CI / Build and push Docker image (push) Successful in 40s
CI / Notify (push) Successful in 2s
CI / Generate TypeScript types (push) Successful in 21s
CI / Server unit tests (push) Successful in 22s
CI / Build server (push) Successful in 35s
CI / Build client (push) Successful in 36s
CI / Playwright E2E tests (push) Successful in 1m18s
CI / Build and push Docker image (push) Successful in 40s
CI / Notify (push) Successful in 2s
This commit is contained in:
@@ -135,7 +135,10 @@ router.post("/dismissQr", async (req: Request<{}, any, DismissQrData["body"]>, r
|
|||||||
try {
|
try {
|
||||||
const dismissed = await dismissPendingQr(login, req.body.id);
|
const dismissed = await dismissPendingQr(login, req.body.id);
|
||||||
if (dismissed?.groupId) {
|
if (dismissed?.groupId) {
|
||||||
const updatedExtra = await markGroupMemberPaid(login, dismissed.groupId);
|
// Platbu zapisujeme ke dni, ke kterému se QR kód vztahuje, ne k dnešnímu dni –
|
||||||
|
// jinak by se při potvrzení platby jiný den příznak zapsal do špatných dat (a zelené zatržítko by se neobjevilo).
|
||||||
|
const orderDate = new Date(`${dismissed.date}T00:00:00`);
|
||||||
|
const updatedExtra = await markGroupMemberPaid(login, dismissed.groupId, orderDate);
|
||||||
if (updatedExtra) getWebsocket().emit("message", updatedExtra);
|
if (updatedExtra) getWebsocket().emit("message", updatedExtra);
|
||||||
}
|
}
|
||||||
res.status(200).json({});
|
res.status(200).json({});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { resetMemoryStorage } from '../storage/memory';
|
import { resetMemoryStorage } from '../storage/memory';
|
||||||
import { getStores, addStore } from '../stores';
|
import { getStores, addStore } from '../stores';
|
||||||
import { createGroup, deleteGroup, addGroupMember, removeGroupMember, updateGroupMember, setGroupState, setGroupBoltTracking } from '../groups';
|
import { createGroup, deleteGroup, addGroupMember, removeGroupMember, updateGroupMember, setGroupState, setGroupBoltTracking, markGroupMemberPaid } from '../groups';
|
||||||
import { GroupState } from '../../../types/gen/types.gen';
|
import { GroupState } from '../../../types/gen/types.gen';
|
||||||
|
|
||||||
const CREATOR = 'tomas';
|
const CREATOR = 'tomas';
|
||||||
@@ -202,3 +202,36 @@ describe('setGroupState', () => {
|
|||||||
expect(d.groups![0].boltTrackingToken).toBeUndefined();
|
expect(d.groups![0].boltTrackingToken).toBeUndefined();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('markGroupMemberPaid', () => {
|
||||||
|
test('označí člena jako zaplaceného pro daný den', async () => {
|
||||||
|
const d = await createGroup(CREATOR, STORE, TODAY);
|
||||||
|
const groupId = d.groups![0].id;
|
||||||
|
const result = await markGroupMemberPaid(CREATOR, groupId, TODAY);
|
||||||
|
expect(result).not.toBeNull();
|
||||||
|
expect(result!.groups![0].members[CREATOR].paid).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('vrátí null pro neexistující skupinu', async () => {
|
||||||
|
const result = await markGroupMemberPaid(CREATOR, 'nonexistent', TODAY);
|
||||||
|
expect(result).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Regrese: potvrzení platby jiný den, než vznikla objednávka, se musí zapsat
|
||||||
|
// ke dni objednávky – jinak se příznak ztratí a zelené zatržítko se nezobrazí.
|
||||||
|
test('zapíše platbu ke dni objednávky i při potvrzení jiný den', async () => {
|
||||||
|
const orderDay = new Date('2025-01-10');
|
||||||
|
const d = await createGroup(CREATOR, STORE, orderDay);
|
||||||
|
const groupId = d.groups![0].id;
|
||||||
|
|
||||||
|
// Uživatel potvrzuje platbu jiný den, ale předáváme datum objednávky.
|
||||||
|
const result = await markGroupMemberPaid(CREATOR, groupId, orderDay);
|
||||||
|
expect(result).not.toBeNull();
|
||||||
|
expect(result!.groups![0].members[CREATOR].paid).toBe(true);
|
||||||
|
|
||||||
|
// Skupina pod jiným dnem neexistuje – ověříme, že tam příznak omylem nevznikl.
|
||||||
|
const otherDay = new Date('2025-01-15');
|
||||||
|
const onOtherDay = await markGroupMemberPaid(CREATOR, groupId, otherDay);
|
||||||
|
expect(onOtherDay).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user