OpenPanel/packages/hasura/test/utils/generateUseListSubscription.spec.ts
Stefan Pejcic 8595a9f4e5 back
2024-05-08 19:58:53 +02:00

96 lines
2.7 KiB
TypeScript

import {
MetaQuery,
Pagination,
CrudSorting,
CrudFilters,
} from "@refinedev/core";
import {
generateUseListSubscription,
genereteUseListSubscription,
} from "../../src/utils";
describe("generateUseListSubscription", () => {
const resource = "post";
const meta: MetaQuery = {
operation: "posts",
fields: ["id", "title", "createdAt"],
};
const pagination: Pagination = {
current: 2,
pageSize: 5,
mode: "server",
};
const sorters: CrudSorting = [{ field: "title", order: "asc" }];
const filters: CrudFilters = [
{ field: "published", operator: "eq", value: true },
];
it("should generate a valid useListSubscription query with pagination, sorters, and filters", () => {
const { query, variables, operation } = generateUseListSubscription({
resource,
meta,
pagination,
sorters,
filters,
});
expect(operation).toEqual(meta.operation);
expect(query).toContain(meta.operation);
expect(query).toMatch(/id/);
expect(query).toMatch(/title/);
expect(query).toMatch(/createdAt/);
expect(variables).toEqual({
limit: 5,
offset: 5,
order_by: { title: "asc" },
where: { _and: [{ published: { _eq: true } }] },
});
});
it("should generate a valid useListSubscription query without pagination, sorters, or filters", () => {
const { query, variables, operation } = generateUseListSubscription({
resource,
meta,
});
expect(operation).toEqual(meta.operation);
expect(query).toContain(meta.operation);
expect(variables).toEqual({ limit: 10, offset: 0 });
});
it("should generate a subscription without pagination when mode is client ", () => {
const { variables } = generateUseListSubscription({
resource,
meta,
pagination: { ...pagination, mode: "client" },
sorters,
filters,
});
expect(variables).toEqual({
order_by: { title: "asc" },
where: { _and: [{ published: { _eq: true } }] },
});
});
it("should be genereteUseListSubscription(deprecated) and equal to generateUseListSubscription", () => {
expect(
genereteUseListSubscription({
resource,
meta,
pagination,
sorters,
filters,
}),
).toEqual(
generateUseListSubscription({
resource,
meta,
pagination,
sorters,
filters,
}),
);
});
});