prisma-markdown
Version:
Prisma Markdown documents generator including ERD diagrams and comment descriptions
76 lines (68 loc) • 2.25 kB
text/typescript
import { DMMF } from "@prisma/generator-helper";
import { beforeAll, describe, expect, it } from "vitest";
import { FieldUtil } from "./field-util";
describe("FieldUtil", () => {
it("format", () => {
const input: DMMF.Field = {
name: "isVarcharNone",
dbName: "varchar_size_none",
kind: "scalar",
isList: false,
isRequired: false,
isUnique: false,
isId: true,
isReadOnly: false,
hasDefaultValue: false,
type: "String",
nativeType: ["VarChar", []],
isGenerated: false,
isUpdatedAt: false,
documentation: "string test varchar test size none",
};
expect(FieldUtil(input).format("t")).toBe("String"); // type
expect(FieldUtil(input).format("s")).toBe(""); // size
expect(
FieldUtil({
...input,
nativeType: ["VarChar", ["127"]],
}).format("s"),
).toBe("127"); // size
expect(FieldUtil(input).format("d")).toBe("VarChar"); // column type
expect(FieldUtil(input).format("n")).toBe("varchar_size_none"); // column n
expect(FieldUtil(input).format("k")).toBe("PK"); // key
expect(FieldUtil({ ...input, isUnique: true }).format("k")).toBe("PK,UK"); // key
expect(FieldUtil({ ...input, isUnique: true }, true).format("k")).toBe(
"PK,FK,UK",
); // key
expect(FieldUtil({ ...input }, true).format("k")).toBe("PK,FK"); // key
expect(FieldUtil(input).format("r")).toBe('"nullable"'); // nullable
expect(FieldUtil({ ...input, isRequired: true }).format("r")).toBe(""); // nullable
});
it("data", () => {
const input: DMMF.Field = {
name: "isVarcharNone",
dbName: "varchar_size_none",
kind: "scalar",
isList: false,
isRequired: false,
isUnique: false,
isId: true,
isReadOnly: false,
hasDefaultValue: false,
type: "String",
nativeType: ["VarChar", ["255"]],
isGenerated: false,
isUpdatedAt: false,
documentation: "string test varchar test size none",
};
expect(FieldUtil(input).data()).toStrictEqual({
name: "varchar_size_none",
constraint: "PK",
format: null,
nativeType: "VarChar",
nullable: true,
size: 255,
type: "String",
});
});
});