strapi/packages/plugins/graphql/tests/graphql-connection.test.e2e.js
2021-06-24 09:09:29 +02:00

138 lines
2.8 KiB
JavaScript

'use strict';
// Helpers.
const { createTestBuilder } = require('../../../../test/helpers/builder');
const { createStrapiInstance } = require('../../../../test/helpers/strapi');
const { createAuthRequest } = require('../../../../test/helpers/request');
const builder = createTestBuilder();
let strapi;
let rq;
let graphqlQuery;
const postModel = {
attributes: {
name: {
type: 'string',
},
rating: {
type: 'integer',
},
},
name: 'post',
description: '',
collectionName: '',
};
const postFixtures = [
{
name: 'post 1',
rating: 4,
},
{
name: 'post 2',
rating: 3,
},
{
name: 'post 3',
rating: 3,
},
{
name: 'post 4',
rating: 4,
},
];
describe('Test Graphql Connection', () => {
beforeAll(async () => {
await builder
.addContentType(postModel)
.addFixtures(postModel.name, postFixtures)
.build();
strapi = await createStrapiInstance();
rq = await createAuthRequest({ strapi });
graphqlQuery = body => {
return rq({
url: '/graphql',
method: 'POST',
body,
});
};
});
afterAll(async () => {
await strapi.destroy();
await builder.cleanup();
});
describe('Test values connection', () => {
test('List posts', async () => {
const res = await graphqlQuery({
query: /* GraphQL */ `
{
postsConnection {
values {
name
rating
}
}
}
`,
});
expect(res.statusCode).toBe(200);
expect(res.body.data.postsConnection.values.length).toBe(postFixtures.length);
expect(res.body.data.postsConnection.values).toEqual(expect.arrayContaining(postFixtures));
});
test('List posts with limit', async () => {
const res = await graphqlQuery({
query: /* GraphQL */ `
{
postsConnection(limit: 1) {
values {
name
rating
}
}
}
`,
});
expect(res.statusCode).toBe(200);
expect(res.body.data.postsConnection.values.length).toBe(1);
});
});
describe('Test groupBy', () => {
test('Groupby simple query', async () => {
const res = await graphqlQuery({
query: /* GraphQL */ `
{
postsConnection {
groupBy {
rating {
key
}
}
}
}
`,
});
expect(res.statusCode).toBe(200);
expect(res.body.data.postsConnection.groupBy.rating.length).toBe(2);
expect(res.body.data.postsConnection.groupBy.rating).toEqual(
expect.arrayContaining([
{
key: 3,
},
{ key: 4 },
])
);
});
});
});