import assert from "node:assert/strict" import test from "node:test" import { useNextNumberRangeNumber } from "../src/utils/functions" test("number range skips identifiers that are already in use", async () => { const tenant = { id: 7, numberRanges: { customerinventoryitems: { prefix: "KIA-", suffix: "", nextNumber: 1000, }, }, } let savedNumberRanges: any = null const tx = { execute: async () => undefined, select: () => ({ from: () => ({ where: async () => [tenant], }), }), update: () => ({ set: (data: any) => ({ where: async () => { savedNumberRanges = data.numberRanges }, }), }), } const server = { db: { transaction: async (callback: (transaction: typeof tx) => Promise) => callback(tx), }, } as any const occupied = new Set(["KIA-1000", "KIA-1001"]) const result = await useNextNumberRangeNumber( server, tenant.id, "customerinventoryitems", async (candidate) => !occupied.has(candidate) ) assert.equal(result.usedNumber, "KIA-1002") assert.equal(savedNumberRanges.customerinventoryitems.nextNumber, 1003) })