chore: move to monorepo structure
This commit is contained in:
@@ -1,100 +0,0 @@
|
||||
import { devUser } from '../credentials';
|
||||
import { buildConfigWithDefaults } from '../buildConfigWithDefaults';
|
||||
|
||||
export const slug = 'global';
|
||||
export const arraySlug = 'array';
|
||||
|
||||
export const accessControlSlug = 'access-control';
|
||||
|
||||
export const englishLocale = 'en';
|
||||
export const spanishLocale = 'es';
|
||||
|
||||
export const globalsEndpoint = 'hello-world';
|
||||
|
||||
const access = {
|
||||
read: () => true,
|
||||
update: () => true,
|
||||
};
|
||||
|
||||
export default buildConfigWithDefaults({
|
||||
localization: {
|
||||
locales: [englishLocale, spanishLocale],
|
||||
defaultLocale: englishLocale,
|
||||
},
|
||||
globals: [
|
||||
{
|
||||
slug,
|
||||
access,
|
||||
fields: [
|
||||
{
|
||||
name: 'json',
|
||||
type: 'json',
|
||||
},
|
||||
{
|
||||
name: 'title',
|
||||
type: 'text',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: arraySlug,
|
||||
access,
|
||||
fields: [
|
||||
{
|
||||
name: 'array',
|
||||
type: 'array',
|
||||
localized: true,
|
||||
fields: [
|
||||
{
|
||||
name: 'text',
|
||||
type: 'text',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
slug: accessControlSlug,
|
||||
access: {
|
||||
read: ({ req: { user } }) => {
|
||||
if (user) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return {
|
||||
enabled: {
|
||||
equals: true,
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
fields: [
|
||||
{
|
||||
name: 'title',
|
||||
type: 'text',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'enabled',
|
||||
type: 'checkbox',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
onInit: async (payload) => {
|
||||
await payload.create({
|
||||
collection: 'users',
|
||||
data: {
|
||||
email: devUser.email,
|
||||
password: devUser.password,
|
||||
},
|
||||
});
|
||||
|
||||
await payload.updateGlobal({
|
||||
slug: accessControlSlug,
|
||||
data: {
|
||||
title: 'hello',
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -1,215 +0,0 @@
|
||||
import { GraphQLClient } from 'graphql-request';
|
||||
import { initPayloadTest } from '../helpers/configHelpers';
|
||||
import configPromise, { accessControlSlug, arraySlug, englishLocale, slug, spanishLocale } from './config';
|
||||
import payload from '../../src';
|
||||
import { RESTClient } from '../helpers/rest';
|
||||
|
||||
describe('globals', () => {
|
||||
let serverURL;
|
||||
beforeAll(async () => {
|
||||
const init = await initPayloadTest({ __dirname, init: { local: false } });
|
||||
serverURL = init.serverURL;
|
||||
});
|
||||
describe('REST', () => {
|
||||
let client: RESTClient;
|
||||
beforeAll(async () => {
|
||||
const config = await configPromise;
|
||||
client = new RESTClient(config, { serverURL, defaultSlug: slug });
|
||||
});
|
||||
it('should create', async () => {
|
||||
const title = 'update';
|
||||
const data = {
|
||||
title,
|
||||
};
|
||||
const { status, doc } = await client.updateGlobal({ data });
|
||||
|
||||
expect(status).toEqual(200);
|
||||
expect(doc).toMatchObject(data);
|
||||
});
|
||||
|
||||
it('should read', async () => {
|
||||
const title = 'read';
|
||||
const data = {
|
||||
title,
|
||||
};
|
||||
await client.updateGlobal({ data });
|
||||
const { status, doc } = await client.findGlobal();
|
||||
|
||||
expect(status).toEqual(200);
|
||||
expect(doc.globalType).toEqual(slug);
|
||||
expect(doc).toMatchObject(data);
|
||||
});
|
||||
|
||||
it('should update with localization', async () => {
|
||||
const array = [{
|
||||
text: 'one',
|
||||
}];
|
||||
|
||||
const { status, doc } = await client.updateGlobal({
|
||||
slug: arraySlug,
|
||||
data: {
|
||||
array,
|
||||
},
|
||||
});
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(doc.array).toHaveLength(1);
|
||||
expect(doc.array).toMatchObject(array);
|
||||
expect(doc.id).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('local', () => {
|
||||
it('should save empty json objects', async () => {
|
||||
const createdJSON = await payload.updateGlobal({
|
||||
slug,
|
||||
data: {
|
||||
json: {
|
||||
state: {},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(createdJSON.json.state).toEqual({});
|
||||
});
|
||||
|
||||
it('should create', async () => {
|
||||
const data = {
|
||||
title: 'title',
|
||||
};
|
||||
const doc = await payload.updateGlobal({
|
||||
slug,
|
||||
data,
|
||||
});
|
||||
expect(doc).toMatchObject(data);
|
||||
});
|
||||
|
||||
it('should read', async () => {
|
||||
const title = 'read';
|
||||
const data = {
|
||||
title,
|
||||
};
|
||||
await payload.updateGlobal({
|
||||
slug,
|
||||
data,
|
||||
});
|
||||
const doc = await payload.findGlobal({
|
||||
slug,
|
||||
});
|
||||
|
||||
expect(doc.globalType).toEqual(slug);
|
||||
expect(doc).toMatchObject(data);
|
||||
});
|
||||
|
||||
it('should update with localization', async () => {
|
||||
const localized = {
|
||||
en: {
|
||||
array: [{
|
||||
text: 'one',
|
||||
}],
|
||||
},
|
||||
es: {
|
||||
array: [{
|
||||
text: 'uno',
|
||||
}],
|
||||
},
|
||||
};
|
||||
|
||||
await payload.updateGlobal({
|
||||
slug: arraySlug,
|
||||
locale: englishLocale,
|
||||
data: {
|
||||
array: localized.en.array,
|
||||
},
|
||||
});
|
||||
|
||||
await payload.updateGlobal({
|
||||
slug: arraySlug,
|
||||
locale: spanishLocale,
|
||||
data: {
|
||||
array: localized.es.array,
|
||||
},
|
||||
});
|
||||
|
||||
const en = await payload.findGlobal({
|
||||
locale: englishLocale,
|
||||
slug: arraySlug,
|
||||
});
|
||||
|
||||
const es = await payload.findGlobal({
|
||||
locale: spanishLocale,
|
||||
slug: arraySlug,
|
||||
});
|
||||
|
||||
expect(en).toMatchObject(localized.en);
|
||||
expect(es).toMatchObject(localized.es);
|
||||
});
|
||||
|
||||
it('should respect valid access query constraint', async () => {
|
||||
const emptyGlobal = await payload.findGlobal({
|
||||
slug: accessControlSlug,
|
||||
overrideAccess: false,
|
||||
});
|
||||
|
||||
expect(Object.keys(emptyGlobal)).toHaveLength(0);
|
||||
|
||||
await payload.updateGlobal({
|
||||
slug: accessControlSlug,
|
||||
data: {
|
||||
enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
const hasAccess = await payload.findGlobal({
|
||||
slug: accessControlSlug,
|
||||
overrideAccess: false,
|
||||
});
|
||||
|
||||
expect(hasAccess.title).toBeDefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe('graphql', () => {
|
||||
let client: GraphQLClient;
|
||||
beforeAll(async () => {
|
||||
const config = await configPromise;
|
||||
const url = `${serverURL}${config.routes.api}${config.routes.graphQL}`;
|
||||
client = new GraphQLClient(url);
|
||||
});
|
||||
|
||||
it('should create', async () => {
|
||||
const title = 'graphql-title';
|
||||
const query = `mutation {
|
||||
updateGlobal(data: {title: "${title}"}) {
|
||||
title
|
||||
}
|
||||
}`;
|
||||
|
||||
const response = await client.request(query);
|
||||
const doc = response.updateGlobal;
|
||||
|
||||
expect(doc).toMatchObject({ title });
|
||||
});
|
||||
|
||||
it('should read', async () => {
|
||||
const data = {
|
||||
title: 'updated graphql',
|
||||
};
|
||||
await payload.updateGlobal({
|
||||
slug,
|
||||
data,
|
||||
});
|
||||
|
||||
const query = `query {
|
||||
Global {
|
||||
title
|
||||
}
|
||||
}`;
|
||||
|
||||
const response = await client.request(query);
|
||||
const doc = response.Global;
|
||||
|
||||
expect(doc).toMatchObject(data);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,41 +0,0 @@
|
||||
/* tslint:disable */
|
||||
/**
|
||||
* This file was automatically generated by Payload.
|
||||
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
||||
* and re-run `payload generate:types` to regenerate this file.
|
||||
*/
|
||||
|
||||
export interface Config {}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "global".
|
||||
*/
|
||||
export interface Global {
|
||||
id: string;
|
||||
title?: string;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "array".
|
||||
*/
|
||||
export interface Array {
|
||||
id: string;
|
||||
array: {
|
||||
text?: string;
|
||||
id?: string;
|
||||
}[];
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "users".
|
||||
*/
|
||||
export interface User {
|
||||
id: string;
|
||||
email?: string;
|
||||
resetPasswordToken?: string;
|
||||
resetPasswordExpiration?: string;
|
||||
loginAttempts?: number;
|
||||
lockUntil?: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
Reference in New Issue
Block a user