feat(orders): issued-order number sequence
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
41
src/__tests__/issued-orders.test.ts
Normal file
41
src/__tests__/issued-orders.test.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { describe, it, expect, afterEach } from "vitest";
|
||||
import prisma from "../config/database";
|
||||
import {
|
||||
generateIssuedOrderNumber,
|
||||
previewIssuedOrderNumber,
|
||||
releaseIssuedOrderNumber,
|
||||
} from "../services/numbering.service";
|
||||
|
||||
afterEach(async () => {
|
||||
await prisma.number_sequences.deleteMany({ where: { type: "issued_order" } });
|
||||
});
|
||||
|
||||
describe("issued-order numbering", () => {
|
||||
it("generates sequential numbers", async () => {
|
||||
const year = new Date().getFullYear();
|
||||
const a = await generateIssuedOrderNumber(year);
|
||||
const b = await generateIssuedOrderNumber(year);
|
||||
expect(Number(b.number)).toBe(Number(a.number) + 1);
|
||||
});
|
||||
|
||||
it("preview does not consume the sequence", async () => {
|
||||
const year = new Date().getFullYear();
|
||||
const p1 = await previewIssuedOrderNumber(year);
|
||||
const p2 = await previewIssuedOrderNumber(year);
|
||||
expect(p1.number).toBe(p2.number);
|
||||
});
|
||||
|
||||
it("release frees only the highest number", async () => {
|
||||
const year = new Date().getFullYear();
|
||||
await generateIssuedOrderNumber(year); // seq 1
|
||||
await generateIssuedOrderNumber(year); // seq 2
|
||||
const c = await generateIssuedOrderNumber(year); // seq 3 (current highest)
|
||||
const beforeRelease = (await previewIssuedOrderNumber(year)).number; // seq 4
|
||||
// Releasing a number that is NOT the current highest is a no-op.
|
||||
await releaseIssuedOrderNumber(year, "00000000");
|
||||
expect((await previewIssuedOrderNumber(year)).number).toBe(beforeRelease);
|
||||
// Releasing the current highest reclaims it.
|
||||
await releaseIssuedOrderNumber(year, c.number);
|
||||
expect((await previewIssuedOrderNumber(year)).number).toBe(c.number);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user