openpanel/packages/graphql/test/getList/getList.spec.ts
Stefan Pejcic 09f9f9502d packages
2024-11-07 19:03:37 +01:00

160 lines
3.6 KiB
TypeScript

import dataProvider from "../../src/index";
import client from "../gqlClient";
import { gql } from "@urql/core";
import "./getList.mock";
const gqlQuery = gql`
query BlogPosts($paging: OffsetPaging!, $filter: BlogPostFilter!, $sorting: [BlogPostSort!]!) {
blogPosts(paging: $paging, filter: $filter, sorting: $sorting) {
nodes {
id
title
status
}
totalCount
}
}
`;
describe("getList", () => {
it("default params", async () => {
const { data, total } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
});
expect(data[0].id).toBe("1");
expect(data.length).toBe(10);
expect(total).toBe(507);
});
describe("pagination", () => {
it("current", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
pagination: {
current: 2,
},
});
expect(data[0].id).toBe("11");
});
it("pageSize", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
pagination: {
pageSize: 2,
},
});
expect(data.length).toBe(2);
});
describe("mode", () => {
it("off", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
pagination: {
mode: "off",
},
});
expect(data.length).toBe(507);
});
it("server", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
pagination: {
mode: "server",
},
});
});
});
});
describe("sorters", () => {
it("sort by id desc", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
sorters: [{ field: "id", order: "desc" }],
});
expect(data[0].id).toBe("507");
});
});
describe("filters", () => {
it("default", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
filters: [{ field: "status", operator: "eq", value: "DRAFT" }],
});
data.map((d) => expect(d.status).toBe("DRAFT"));
});
it("and", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
filters: [
{
operator: "and",
value: [
{ field: "status", operator: "eq", value: "DRAFT" },
{ field: "id", operator: "lt", value: 10 },
],
},
],
});
expect(data.length).toBe(4);
expect(data[0].status).toBe("DRAFT");
});
it("or", async () => {
const { data } = await dataProvider(client).getList({
resource: "blogPosts",
meta: {
gqlQuery: gqlQuery,
},
filters: [
{
operator: "or",
value: [
{ field: "status", operator: "eq", value: "DRAFT" },
{ field: "status", operator: "eq", value: "PUBLISHED" },
],
},
],
});
data.map((d) => expect(d.status).not.toBe("REJECTED"));
});
});
});