mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
160 lines
3.6 KiB
TypeScript
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"));
|
|
});
|
|
});
|
|
});
|