- feat: order confirmation PDF generation with VAT support - feat: order confirmation modal with custom item editing - fix: attendance negative duration clamping and switchProject timing - fix: Quill editor locked to Tahoma 14px, PDF heading sizes - fix: invoice/offer PDF font consistency (Tahoma enforcement) - fix: invoice alert cron improvements - fix: NAS financials manager edge cases - refactor: numbering service with unique sequence constraints Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
import {
|
|
generateSharedNumber,
|
|
generateOfferNumber,
|
|
} from "../services/numbering.service";
|
|
import prisma from "../config/database";
|
|
|
|
describe("generateSharedNumber", () => {
|
|
beforeEach(async () => {
|
|
await prisma.number_sequences.deleteMany({ where: { type: "shared" } });
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await prisma.number_sequences.deleteMany({ where: { type: "shared" } });
|
|
});
|
|
|
|
it("returns a non-empty string", async () => {
|
|
const num = await generateSharedNumber();
|
|
expect(typeof num).toBe("string");
|
|
expect(num.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("increments on consecutive calls", async () => {
|
|
const num1 = await generateSharedNumber();
|
|
const num2 = await generateSharedNumber();
|
|
expect(num1).not.toBe(num2);
|
|
});
|
|
});
|
|
|
|
describe("generateOfferNumber", () => {
|
|
beforeEach(async () => {
|
|
await prisma.number_sequences.deleteMany({ where: { type: "offer" } });
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await prisma.number_sequences.deleteMany({ where: { type: "offer" } });
|
|
});
|
|
|
|
it("returns a non-empty string", async () => {
|
|
const num = await generateOfferNumber();
|
|
expect(typeof num).toBe("string");
|
|
expect(num.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
it("increments on consecutive calls", async () => {
|
|
const num1 = await generateOfferNumber();
|
|
const num2 = await generateOfferNumber();
|
|
expect(num1).not.toBe(num2);
|
|
});
|
|
});
|