Files
bknd/app/__test__/data/mutation.relation.test.ts
2024-11-16 12:01:47 +01:00

51 lines
1.5 KiB
TypeScript

// eslint-disable-next-line import/no-unresolved
import { afterAll, describe, expect, test } from "bun:test";
import {
Entity,
EntityManager,
ManyToOneRelation,
NumberField,
SchemaManager,
TextField
} from "../../src/data";
import { getDummyConnection } from "./helper";
const { dummyConnection, afterAllCleanup } = getDummyConnection();
afterAll(afterAllCleanup);
describe("Mutator relation", async () => {
const connection = dummyConnection;
//const connection = getLocalLibsqlConnection();
//const connection = getCreds("DB_DATA");
const posts = new Entity("posts", [
new TextField("title"),
new TextField("content", { default_value: "..." }),
new NumberField("count", { default_value: 0 })
]);
const users = new Entity("users", [new TextField("username")]);
const relations = [new ManyToOneRelation(posts, users)];
const em = new EntityManager([posts, users], connection, relations);
const schema = new SchemaManager(em);
await schema.sync({ force: true });
test("add users", async () => {
const { data } = await em.mutator(users).insertOne({ username: "user1" });
await em.mutator(users).insertOne({ username: "user2" });
// create some posts
await em.mutator(posts).insertOne({ title: "post1", content: "content1" });
// expect to throw
expect(em.mutator(posts).insertOne({ title: "post2", users_id: 10 })).rejects.toThrow();
expect(
em.mutator(posts).insertOne({ title: "post2", users_id: data.id })
).resolves.toBeDefined();
});
});