mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-17 04:46:05 +00:00
Updated the package version to 0.18.0-rc.4. Improved test logging by disabling console output during tests to reduce noise and enhance readability. Adjusted various test files to implement console log management, ensuring cleaner test outputs.
109 lines
3.2 KiB
TypeScript
109 lines
3.2 KiB
TypeScript
import { afterAll, beforeAll, describe, expect, test } from "bun:test";
|
|
import { registries } from "../../src";
|
|
import { createApp } from "core/test/utils";
|
|
import * as proto from "../../src/data/prototype";
|
|
import { StorageLocalAdapter } from "adapter/node/storage/StorageLocalAdapter";
|
|
import { disableConsoleLog, enableConsoleLog } from "core/utils/test";
|
|
|
|
beforeAll(() => disableConsoleLog());
|
|
afterAll(enableConsoleLog);
|
|
|
|
describe("repros", async () => {
|
|
/**
|
|
* steps:
|
|
* 1. enable media
|
|
* 2. create 'test' entity
|
|
* 3. add media to 'test'
|
|
*
|
|
* There was an issue that AppData had old configs because of system entity "media"
|
|
*/
|
|
test("registers media entity correctly to relate to it", async () => {
|
|
registries.media.register("local", StorageLocalAdapter);
|
|
const app = createApp();
|
|
await app.build();
|
|
|
|
{
|
|
// 1. enable media
|
|
const [, config] = await app.module.media.schema().patch("", {
|
|
enabled: true,
|
|
adapter: {
|
|
type: "local",
|
|
config: {
|
|
path: "./",
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(config.enabled).toBe(true);
|
|
}
|
|
|
|
{
|
|
// 2. create 'test' entity
|
|
await app.module.data.schema().patch(
|
|
"entities.test",
|
|
proto
|
|
.entity("test", {
|
|
content: proto.text(),
|
|
})
|
|
.toJSON(),
|
|
);
|
|
expect(app.em.entities.map((e) => e.name)).toContain("test");
|
|
}
|
|
|
|
{
|
|
await app.module.data.schema().patch("entities.test.fields.files", {
|
|
type: "media",
|
|
config: {
|
|
required: false,
|
|
fillable: ["update"],
|
|
hidden: false,
|
|
mime_types: [],
|
|
virtual: true,
|
|
entity: "test",
|
|
},
|
|
});
|
|
|
|
expect(
|
|
app.module.data.schema().patch("relations.000", {
|
|
type: "poly",
|
|
source: "test",
|
|
target: "media",
|
|
config: { mappedBy: "files" },
|
|
}),
|
|
).resolves.toBeDefined();
|
|
}
|
|
|
|
expect(app.em.entities.map((e) => e.name)).toEqual(["media", "test"]);
|
|
});
|
|
|
|
test.only("verify inversedBy", async () => {
|
|
const schema = proto.em(
|
|
{
|
|
products: proto.entity("products", {
|
|
title: proto.text(),
|
|
}),
|
|
product_likes: proto.entity("product_likes", {
|
|
created_at: proto.date(),
|
|
}),
|
|
users: proto.entity("users", {}),
|
|
},
|
|
(fns, schema) => {
|
|
fns.relation(schema.product_likes).manyToOne(schema.products, { inversedBy: "likes" });
|
|
fns.relation(schema.product_likes).manyToOne(schema.users);
|
|
},
|
|
);
|
|
const app = createApp({ config: { data: schema.toJSON() } });
|
|
await app.build();
|
|
|
|
const info = (await (await app.server.request("/api/data/info/products")).json()) as any;
|
|
|
|
expect(info.fields).toEqual(["id", "title"]);
|
|
expect(info.relations.listable).toEqual([
|
|
{
|
|
entity: "product_likes",
|
|
ref: "likes",
|
|
},
|
|
]);
|
|
});
|
|
});
|