229 lines
5.0 KiB
TypeScript
229 lines
5.0 KiB
TypeScript
import { GraphQLClient } from 'graphql-request'
|
|
|
|
import payload from '../../packages/payload/src'
|
|
import { initPayloadTest } from '../helpers/configHelpers'
|
|
import { RESTClient } from '../helpers/rest'
|
|
import configPromise, {
|
|
accessControlSlug,
|
|
arraySlug,
|
|
englishLocale,
|
|
slug,
|
|
spanishLocale,
|
|
} from './config'
|
|
|
|
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: any = 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)
|
|
})
|
|
})
|
|
})
|