From b2beec302f12df36b7b34c1d484bc10f0365136d Mon Sep 17 00:00:00 2001 From: Jacob Fletcher Date: Wed, 1 Nov 2023 18:02:25 -0400 Subject: [PATCH] chore: unable to boot config and endpoints test suites (#3969) --- test/config/config.ts | 26 +++-- test/endpoints/config.ts | 136 ++++++------------------ test/endpoints/endpoints/collections.ts | 38 +++++++ test/endpoints/endpoints/globals.ts | 16 +++ test/endpoints/endpoints/root.ts | 51 +++++++++ test/endpoints/int.spec.ts | 2 +- test/endpoints/mocks/emptyModule.js | 3 + test/endpoints/shared.ts | 13 +++ test/helpers/configHelpers.ts | 8 -- 9 files changed, 173 insertions(+), 120 deletions(-) create mode 100644 test/endpoints/endpoints/collections.ts create mode 100644 test/endpoints/endpoints/globals.ts create mode 100644 test/endpoints/endpoints/root.ts create mode 100644 test/endpoints/mocks/emptyModule.js create mode 100644 test/endpoints/shared.ts diff --git a/test/config/config.ts b/test/config/config.ts index 75302e6fba..de77a55425 100644 --- a/test/config/config.ts +++ b/test/config/config.ts @@ -1,13 +1,16 @@ -import type { Config } from '../../packages/payload/src/config/types' - import { buildConfigWithDefaults } from '../buildConfigWithDefaults' -import { openAccess } from '../helpers/configHelpers' +import { devUser } from '../credentials' -const config: Config = { +export default buildConfigWithDefaults({ collections: [ { slug: 'pages', - access: openAccess, + access: { + read: () => true, + create: () => true, + delete: () => true, + update: () => true, + }, endpoints: [ { path: '/hello', @@ -64,6 +67,13 @@ const config: Config = { }, ], custom: { name: 'Customer portal' }, -} - -export default buildConfigWithDefaults(config) + onInit: async (payload) => { + await payload.create({ + collection: 'users', + data: { + email: devUser.email, + password: devUser.password, + }, + }) + }, +}) diff --git a/test/endpoints/config.ts b/test/endpoints/config.ts index 7aa2ad6335..815c838d32 100644 --- a/test/endpoints/config.ts +++ b/test/endpoints/config.ts @@ -1,61 +1,28 @@ -import type { Response } from 'express' - -import express from 'express' - -import type { Config } from '../../packages/payload/src/config/types' -import type { PayloadRequest } from '../../packages/payload/src/express/types' +import path from 'path' import { buildConfigWithDefaults } from '../buildConfigWithDefaults' import { devUser } from '../credentials' -import { openAccess } from '../helpers/configHelpers' +import { collectionEndpoints } from './endpoints/collections' +import { globalEndpoints } from './endpoints/globals' +import { endpoints } from './endpoints/root' +import { + collectionSlug, + globalSlug, + noEndpointsCollectionSlug, + noEndpointsGlobalSlug, +} from './shared' -export const collectionSlug = 'endpoints' -export const globalSlug = 'global-endpoints' - -export const globalEndpoint = 'global' -export const applicationEndpoint = 'path' -export const rootEndpoint = 'root' -export const noEndpointsCollectionSlug = 'no-endpoints' -export const noEndpointsGlobalSlug = 'global-no-endpoints' - -const MyConfig: Config = { +export default buildConfigWithDefaults({ collections: [ { slug: collectionSlug, - access: openAccess, - endpoints: [ - { - path: '/say-hello/joe-bloggs', - method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hey Joey!' }) - }, - }, - { - path: '/say-hello/:group/:name', - method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: `Hello ${req.params.name} @ ${req.params.group}` }) - }, - }, - { - path: '/say-hello/:name', - method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: `Hello ${req.params.name}!` }) - }, - }, - { - path: '/whoami', - method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ - name: req.body.name, - age: req.body.age, - }) - }, - }, - ], + access: { + read: () => true, + create: () => true, + delete: () => true, + update: () => true, + }, + endpoints: [...(collectionEndpoints || [])], fields: [ { name: 'title', @@ -78,15 +45,7 @@ const MyConfig: Config = { globals: [ { slug: globalSlug, - endpoints: [ - { - path: `/${globalEndpoint}`, - method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json(req.body) - }, - }, - ], + endpoints: [...(globalEndpoints || [])], fields: [], }, { @@ -101,48 +60,21 @@ const MyConfig: Config = { ], }, ], - endpoints: [ - { - path: `/${applicationEndpoint}`, - method: 'post', - handler: (req: PayloadRequest, res: Response): void => { - res.json(req.body) - }, - }, - { - path: `/${applicationEndpoint}`, - method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hello, world!' }) - }, - }, - { - path: `/${applicationEndpoint}/i18n`, - method: 'get', - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: req.t('general:backToDashboard') }) - }, - }, - { - path: `/${rootEndpoint}`, - method: 'get', - root: true, - handler: (req: PayloadRequest, res: Response): void => { - res.json({ message: 'Hello, world!' }) - }, - }, - { - path: `/${rootEndpoint}`, - method: 'post', - root: true, - handler: [ - express.json({ type: 'application/json' }), - (req: PayloadRequest, res: Response): void => { - res.json(req.body) + endpoints: [...(endpoints || [])], + admin: { + webpack: (config) => { + return { + ...config, + resolve: { + ...config.resolve, + alias: { + ...config.resolve.alias, + express: path.resolve(__dirname, './mocks/emptyModule.js'), + }, }, - ], + } }, - ], + }, onInit: async (payload) => { await payload.create({ collection: 'users', @@ -152,6 +84,4 @@ const MyConfig: Config = { }, }) }, -} - -export default buildConfigWithDefaults(MyConfig) +}) diff --git a/test/endpoints/endpoints/collections.ts b/test/endpoints/endpoints/collections.ts new file mode 100644 index 0000000000..88f2978c11 --- /dev/null +++ b/test/endpoints/endpoints/collections.ts @@ -0,0 +1,38 @@ +import type { Response } from 'express' + +import type { CollectionConfig } from '../../../packages/payload/src/collections/config/types' +import type { PayloadRequest } from '../../../packages/payload/src/express/types' + +export const collectionEndpoints: CollectionConfig['endpoints'] = [ + { + path: '/say-hello/joe-bloggs', + method: 'get', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: 'Hey Joey!' }) + }, + }, + { + path: '/say-hello/:group/:name', + method: 'get', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: `Hello ${req.params.name} @ ${req.params.group}` }) + }, + }, + { + path: '/say-hello/:name', + method: 'get', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: `Hello ${req.params.name}!` }) + }, + }, + { + path: '/whoami', + method: 'post', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ + name: req.body.name, + age: req.body.age, + }) + }, + }, +] diff --git a/test/endpoints/endpoints/globals.ts b/test/endpoints/endpoints/globals.ts new file mode 100644 index 0000000000..eafd2eaa03 --- /dev/null +++ b/test/endpoints/endpoints/globals.ts @@ -0,0 +1,16 @@ +import type { Response } from 'express' + +import type { PayloadRequest } from '../../../packages/payload/src/express/types' +import type { GlobalConfig } from '../../../packages/payload/src/globals/config/types' + +import { globalEndpoint } from '../shared' + +export const globalEndpoints: GlobalConfig['endpoints'] = [ + { + path: `/${globalEndpoint}`, + method: 'post', + handler: (req: PayloadRequest, res: Response): void => { + res.json(req.body) + }, + }, +] diff --git a/test/endpoints/endpoints/root.ts b/test/endpoints/endpoints/root.ts new file mode 100644 index 0000000000..3990d62de7 --- /dev/null +++ b/test/endpoints/endpoints/root.ts @@ -0,0 +1,51 @@ +import type { Response } from 'express' + +import express from 'express' + +import type { Config } from '../../../packages/payload/src/config/types' +import type { PayloadRequest } from '../../../packages/payload/src/express/types' + +import { applicationEndpoint, rootEndpoint } from '../shared' + +export const endpoints: Config['endpoints'] = [ + { + path: `/${applicationEndpoint}`, + method: 'post', + handler: (req: PayloadRequest, res: Response): void => { + res.json(req.body) + }, + }, + { + path: `/${applicationEndpoint}`, + method: 'get', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: 'Hello, world!' }) + }, + }, + { + path: `/${applicationEndpoint}/i18n`, + method: 'get', + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: req.t('general:backToDashboard') }) + }, + }, + { + path: `/${rootEndpoint}`, + method: 'get', + root: true, + handler: (req: PayloadRequest, res: Response): void => { + res.json({ message: 'Hello, world!' }) + }, + }, + { + path: `/${rootEndpoint}`, + method: 'post', + root: true, + handler: [ + express.json({ type: 'application/json' }), + (req: PayloadRequest, res: Response): void => { + res.json(req.body) + }, + ], + }, +] diff --git a/test/endpoints/int.spec.ts b/test/endpoints/int.spec.ts index 736e38ba1f..d429579076 100644 --- a/test/endpoints/int.spec.ts +++ b/test/endpoints/int.spec.ts @@ -8,7 +8,7 @@ import { noEndpointsCollectionSlug, noEndpointsGlobalSlug, rootEndpoint, -} from './config' +} from './shared' require('isomorphic-fetch') diff --git a/test/endpoints/mocks/emptyModule.js b/test/endpoints/mocks/emptyModule.js new file mode 100644 index 0000000000..13a7146b6b --- /dev/null +++ b/test/endpoints/mocks/emptyModule.js @@ -0,0 +1,3 @@ +export default { + json: () => {}, +} diff --git a/test/endpoints/shared.ts b/test/endpoints/shared.ts new file mode 100644 index 0000000000..a31c8d2153 --- /dev/null +++ b/test/endpoints/shared.ts @@ -0,0 +1,13 @@ +export const collectionSlug = 'endpoints' + +export const globalSlug = 'global-endpoints' + +export const globalEndpoint = 'global' + +export const applicationEndpoint = 'path' + +export const rootEndpoint = 'root' + +export const noEndpointsCollectionSlug = 'no-endpoints' + +export const noEndpointsGlobalSlug = 'global-no-endpoints' diff --git a/test/helpers/configHelpers.ts b/test/helpers/configHelpers.ts index 13d36081f5..b90c6e2a65 100644 --- a/test/helpers/configHelpers.ts +++ b/test/helpers/configHelpers.ts @@ -6,7 +6,6 @@ import shelljs from 'shelljs' import { v4 as uuid } from 'uuid' import type { Payload } from '../../packages/payload/src' -import type { CollectionConfig } from '../../packages/payload/src/collections/config/types' import type { InitOptions } from '../../packages/payload/src/config/types' import payload from '../../packages/payload/src' @@ -70,10 +69,3 @@ export async function initPayloadTest(options: Options): Promise true, - create: () => true, - delete: () => true, - update: () => true, -}