chore: move to monorepo structure

This commit is contained in:
Alessio Gravili
2023-08-23 12:20:30 +02:00
parent e24ad67168
commit a67278b29f
1398 changed files with 2392 additions and 16005 deletions

View File

@@ -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',
},
});
},
});

View File

@@ -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);
});
});
});

View File

@@ -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;
}