chore: adds global methods

This commit is contained in:
James
2023-08-27 11:02:38 -04:00
parent 126f7f1a5a
commit 2a99e6b72a
9 changed files with 208 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ import { LocalizedArrays } from './collections/LocalizedArrays';
import { LocalizedBlocks } from './collections/LocalizedBlocks';
import { LocalizedGroups } from './collections/LocalizedGroups';
import { Posts } from './collections/Posts';
import { MainMenu } from './globals/MainMenu';
const config = buildConfigWithDefaults({
collections: [
@@ -30,6 +31,9 @@ const config = buildConfigWithDefaults({
],
},
],
globals: [
MainMenu,
],
localization: {
locales: ['en', 'es'],
defaultLocale: 'en',

View File

@@ -0,0 +1,27 @@
import { GlobalConfig } from '../../../src/globals/config/types';
export const MainMenu: GlobalConfig = {
slug: 'main-menu',
fields: [
{
name: 'title',
type: 'text',
localized: true,
},
{
name: 'nonLocalizedField',
type: 'text',
},
{
name: 'array',
type: 'array',
fields: [
{
name: 'localizedText',
type: 'text',
localized: true,
},
],
},
],
};

View File

@@ -493,4 +493,70 @@ describe('Postgres', () => {
expect(retrievedGroup.group.es.number).toStrictEqual(456);
});
});
describe('globals', () => {
let mainMenu;
it('creates global', async () => {
mainMenu = await payload.updateGlobal({
slug: 'main-menu',
data: {
title: 'hello in english',
nonLocalizedField: 'hello',
array: [
{
localizedText: 'row 1 en',
},
{
localizedText: 'row 2 en',
},
],
},
});
expect(mainMenu.title).toStrictEqual('hello in english');
expect(mainMenu.nonLocalizedField).toStrictEqual('hello');
expect(mainMenu.array[0].localizedText).toStrictEqual('row 1 en');
expect(mainMenu.array[1].localizedText).toStrictEqual('row 2 en');
});
it('adds locale to global', async () => {
const updated = await payload.updateGlobal({
slug: 'main-menu',
locale: 'es',
data: {
title: 'hello in spanish',
array: [
{
id: mainMenu.array[0].id,
localizedText: 'row 1 es',
},
{
id: mainMenu.array[1].id,
localizedText: 'row 2 es',
},
],
},
});
expect(updated.title).toStrictEqual('hello in spanish');
expect(updated.nonLocalizedField).toStrictEqual('hello');
expect(updated.array[0].localizedText).toStrictEqual('row 1 es');
expect(updated.array[1].localizedText).toStrictEqual('row 2 es');
});
it('retrieves global in all locales', async () => {
const retrieved = await payload.findGlobal({
slug: 'main-menu',
locale: 'all',
});
expect(retrieved.title.en).toStrictEqual('hello in english');
expect(retrieved.title.es).toStrictEqual('hello in spanish');
expect(retrieved.nonLocalizedField).toStrictEqual('hello');
expect(retrieved.array[0].localizedText.en).toStrictEqual('row 1 en');
expect(retrieved.array[1].localizedText.en).toStrictEqual('row 2 en');
expect(retrieved.array[0].localizedText.es).toStrictEqual('row 1 es');
expect(retrieved.array[1].localizedText.es).toStrictEqual('row 2 es');
});
});
});