From 0a40dd43cb0e50a58488d33f0c3446c895b4972b Mon Sep 17 00:00:00 2001 From: James Mikrut Date: Sun, 14 Aug 2022 11:04:05 -0700 Subject: [PATCH] test: adds dataloader test (#936) * chore: adds dataloader test config * test: passing dataloader test --- test/dataloader/config.ts | 47 ++++++++++++++++++++++++++++++++ test/dataloader/int.spec.ts | 53 +++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 test/dataloader/config.ts create mode 100644 test/dataloader/int.spec.ts diff --git a/test/dataloader/config.ts b/test/dataloader/config.ts new file mode 100644 index 0000000000..551a84b5a0 --- /dev/null +++ b/test/dataloader/config.ts @@ -0,0 +1,47 @@ +import { buildConfig } from '../buildConfig'; +import { devUser } from '../credentials'; + +export default buildConfig({ + collections: [ + { + slug: 'posts', + fields: [ + { + name: 'title', + type: 'text', + required: true, + }, + { + name: 'owner', + type: 'relationship', + relationTo: 'users', + hooks: { + beforeChange: [ + ({ req: { user } }) => user?.id, + ], + }, + }, + + ], + }, + ], + onInit: async (payload) => { + const user = await payload.create({ + collection: 'users', + data: { + email: devUser.email, + password: devUser.password, + }, + }); + + await payload.create({ + user, + collection: 'posts', + data: postDoc, + }); + }, +}); + +export const postDoc = { + title: 'test post', +}; diff --git a/test/dataloader/int.spec.ts b/test/dataloader/int.spec.ts new file mode 100644 index 0000000000..32459eb88d --- /dev/null +++ b/test/dataloader/int.spec.ts @@ -0,0 +1,53 @@ +import { GraphQLClient } from 'graphql-request'; +import payload from '../../src'; +import { devUser } from '../credentials'; +import { initPayloadTest } from '../helpers/configHelpers'; +import { postDoc } from './config'; + +describe('dataloader', () => { + let serverURL; + beforeAll(async () => { + const init = await initPayloadTest({ __dirname, init: { local: false } }); + serverURL = init.serverURL; + }); + + describe('graphql', () => { + let client: GraphQLClient; + let token: string; + + beforeAll(async () => { + const url = `${serverURL}/api/graphql`; + client = new GraphQLClient(url); + + const loginResult = await payload.login({ + collection: 'users', + data: { + email: devUser.email, + password: devUser.password, + }, + }); + + if (loginResult.token) token = loginResult.token; + }); + + it('should allow querying via graphql', async () => { + const query = `query { + Posts { + docs { + title + owner { + email + } + } + } + }`; + + const response = await client.request(query, null, { + Authorization: `JWT ${token}`, + }); + + const { docs } = response.Posts; + expect(docs[0].title).toStrictEqual(postDoc.title); + }); + }); +});