UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

89 lines (75 loc) 2.15 kB
import { Alepha, z } from "alepha"; import { describe, expect, it } from "vitest"; import { DbError } from "../core/errors/DbError.ts"; import { $entity, $repository, db } from "../core/index.ts"; import { AlephaOrmPostgres } from "../postgres/index.ts"; describe("primaryKey", () => { it("should handle identity primary key with overflow", async () => { class App { identity = $repository( $entity({ name: "identity", schema: z.object({ id: db.identityPrimaryKey({ mode: "always", minValue: 2147483646, }), }), }), ); } const alepha = Alepha.create().with(AlephaOrmPostgres); const app = alepha.inject(App); await alepha.start(); expect(await app.identity.create({})).toEqual({ id: 2147483646, }); await app.identity.create({}); await expect(() => app.identity.create({})).rejects.toThrowError(DbError); }); it("should handle big identity primary key without overflow", async () => { class App { big = $repository( $entity({ name: "big", schema: z.object({ id: db.bigIdentityPrimaryKey({ mode: "always", minValue: 2147483646, }), }), }), ); } const alepha = Alepha.create().with(AlephaOrmPostgres); const app = alepha.inject(App); await alepha.start(); expect(await app.big.create({})).toEqual({ id: 2147483646, }); expect(await app.big.create({})).toEqual({ id: 2147483647, }); expect(await app.big.create({})).toEqual({ id: 2147483648, }); }); it("should handle uuid primary key", async () => { class App { uuid = $repository( $entity({ name: "uuid", schema: z.object({ id: db.uuidPrimaryKey(), }), }), ); } const alepha = Alepha.create().with(AlephaOrmPostgres); const app = alepha.inject(App); await alepha.start(); expect(await app.uuid.create({})).toEqual({ id: expect.any(String), }); }); });