openpanel/packages/nestjsx-crud/test/getList/index.spec.ts
Stefan Pejcic 8595a9f4e5 back
2024-05-08 19:58:53 +02:00

150 lines
4.7 KiB
TypeScript

import axios from "axios";
import JsonServer from "../../src/index";
import "./index.mock";
describe("getList", () => {
it("correct response", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({ resource: "posts" });
expect(data[0]["id"]).toBe("1b175cdc-4407-49d9-82cd-35e9f31afec2");
expect(data[0]["title"]).toBe("User-friendly New Mexico Bedfordshire");
expect(total).toBe(135);
});
it("correct sorting response", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({
resource: "posts",
sorters: [
{
field: "id",
order: "asc",
},
],
});
expect(data[0]["id"]).toBe("011edb32-f071-424a-8747-81d894f52906");
expect(data[0]["title"]).toBe("Games initiatives online");
expect(total).toBe(135);
});
it("correct filter response", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({
resource: "posts",
filters: [
{
field: "category.id",
operator: "in",
value: ["73bdc4c0-0cc2-49bb-bd6f-550deb795468"],
},
],
});
expect(data[0]["category"]["title"]).toBe("Deposit Capacitor Hdd");
expect(total).toBe(24);
});
it("correct filter and sort response", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({
resource: "posts",
filters: [
{
field: "category.id",
operator: "in",
value: ["73bdc4c0-0cc2-49bb-bd6f-550deb795468"],
},
],
sorters: [
{
field: "id",
order: "asc",
},
],
});
expect(data[0]["title"]).toBe("Games initiatives online");
expect(total).toBe(24);
});
it("or/and correct filter response", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({
resource: "posts",
filters: [
{
key: "1",
operator: "or",
value: [
{
key: "1.1",
operator: "and",
value: [
{
field: "title",
operator: "startswith",
value: "a",
},
{
field: "title",
operator: "contains",
value: "heuristic",
},
],
},
{
key: "1.2",
operator: "and",
value: [
{
field: "title",
operator: "startswith",
value: "e",
},
{
field: "title",
operator: "contains",
value: "invoice",
},
],
},
],
},
],
});
expect(data[0]["title"]).toBe("Engage Marshall Islands invoice");
expect(data[1]["title"]).toBe("Avon heuristic Washington");
expect(total).toBe(2);
});
it("correct response without pagination", async () => {
const { data, total } = await JsonServer(
"https://api.nestjsx-crud.refine.dev",
axios,
).getList({
resource: "posts",
pagination: {
mode: "off",
},
});
expect(data[0]["id"]).toBe("1b175cdc-4407-49d9-82cd-35e9f31afec2");
expect(data[0]["title"]).toBe("User-friendly New Mexico Bedfordshire");
expect(total).toBe(1);
});
});