Fixes #11458 Some complex, nested fields were receiving incorrect field paths and schema paths, leading to a `"Error: No client field found"` error. This PR ensures field paths are calculated correctly, by matching it to how they're calculated in payload hooks.
241 lines
6.0 KiB
TypeScript
241 lines
6.0 KiB
TypeScript
import path from 'path'
|
|
import { getFileByPath, type Payload } from 'payload'
|
|
import { fileURLToPath } from 'url'
|
|
|
|
import type { DraftPost } from './payload-types.js'
|
|
|
|
import { devUser } from '../credentials.js'
|
|
import { executePromises } from '../helpers/executePromises.js'
|
|
import {
|
|
autosaveWithValidateCollectionSlug,
|
|
diffCollectionSlug,
|
|
draftCollectionSlug,
|
|
mediaCollectionSlug,
|
|
} from './slugs.js'
|
|
import { textToLexicalJSON } from './textToLexicalJSON.js'
|
|
|
|
const filename = fileURLToPath(import.meta.url)
|
|
const dirname = path.dirname(filename)
|
|
|
|
export async function seed(_payload: Payload, parallel: boolean = false) {
|
|
const blocksField: DraftPost['blocksField'] = [
|
|
{
|
|
blockType: 'block',
|
|
localized: null,
|
|
text: 'Hello World',
|
|
},
|
|
]
|
|
|
|
const imageFilePath = path.resolve(dirname, './image.jpg')
|
|
const imageFile = await getFileByPath(imageFilePath)
|
|
|
|
const { id: uploadedImage } = await _payload.create({
|
|
collection: mediaCollectionSlug,
|
|
data: {},
|
|
file: imageFile,
|
|
})
|
|
|
|
const imageFilePath2 = path.resolve(dirname, './image.png')
|
|
const imageFile2 = await getFileByPath(imageFilePath2)
|
|
|
|
const { id: uploadedImage2 } = await _payload.create({
|
|
collection: mediaCollectionSlug,
|
|
data: {},
|
|
file: imageFile2,
|
|
})
|
|
|
|
await executePromises(
|
|
[
|
|
() =>
|
|
_payload.create({
|
|
collection: 'users',
|
|
data: {
|
|
email: devUser.email,
|
|
password: devUser.password,
|
|
},
|
|
depth: 0,
|
|
overrideAccess: true,
|
|
}),
|
|
() =>
|
|
_payload.create({
|
|
collection: draftCollectionSlug,
|
|
data: {
|
|
blocksField,
|
|
description: 'Description',
|
|
radio: 'test',
|
|
title: 'Draft Title',
|
|
},
|
|
depth: 0,
|
|
overrideAccess: true,
|
|
draft: true,
|
|
}),
|
|
],
|
|
parallel,
|
|
)
|
|
|
|
const { id: manyDraftsID } = await _payload.create({
|
|
collection: draftCollectionSlug,
|
|
data: {
|
|
blocksField,
|
|
description: 'Description',
|
|
radio: 'test',
|
|
title: 'Title With Many Versions',
|
|
},
|
|
depth: 0,
|
|
overrideAccess: true,
|
|
draft: true,
|
|
})
|
|
|
|
for (let i = 0; i < 10; i++) {
|
|
await _payload.update({
|
|
id: manyDraftsID,
|
|
collection: draftCollectionSlug,
|
|
data: {
|
|
title: `Title With Many Versions ${i + 2}`,
|
|
},
|
|
depth: 0,
|
|
overrideAccess: true,
|
|
})
|
|
}
|
|
|
|
const draft2 = await _payload.create({
|
|
collection: draftCollectionSlug,
|
|
data: {
|
|
_status: 'published',
|
|
blocksField,
|
|
description: 'Description',
|
|
radio: 'test',
|
|
title: 'Published Title',
|
|
},
|
|
depth: 0,
|
|
overrideAccess: true,
|
|
draft: false,
|
|
})
|
|
|
|
await _payload.create({
|
|
collection: autosaveWithValidateCollectionSlug,
|
|
data: {
|
|
title: 'Initial seeded title',
|
|
},
|
|
})
|
|
|
|
const diffDoc = await _payload.create({
|
|
collection: diffCollectionSlug,
|
|
locale: 'en',
|
|
data: {
|
|
array: [
|
|
{
|
|
textInArray: 'textInArray',
|
|
},
|
|
],
|
|
arrayLocalized: [
|
|
{
|
|
textInArrayLocalized: 'textInArrayLocalized',
|
|
},
|
|
],
|
|
blocks: [
|
|
{
|
|
blockType: 'TextBlock',
|
|
textInBlock: 'textInBlock',
|
|
},
|
|
{
|
|
blockType: 'CollapsibleBlock',
|
|
textInCollapsibleInCollapsibleBlock: 'textInCollapsibleInCollapsibleBlock',
|
|
textInRowInCollapsibleBlock: 'textInRowInCollapsibleBlock',
|
|
},
|
|
{
|
|
blockType: 'TabsBlock',
|
|
namedTab1InBlock: {
|
|
textInNamedTab1InBlock: 'textInNamedTab1InBlock',
|
|
},
|
|
textInUnnamedTab2InBlock: 'textInUnnamedTab2InBlock',
|
|
},
|
|
],
|
|
checkbox: true,
|
|
code: 'code',
|
|
date: '2021-01-01T00:00:00.000Z',
|
|
email: 'email@email.com',
|
|
group: {
|
|
textInGroup: 'textInGroup',
|
|
},
|
|
namedTab1: {
|
|
textInNamedTab1: 'textInNamedTab1',
|
|
},
|
|
number: 1,
|
|
point: [1, 2],
|
|
radio: 'option1',
|
|
relationship: manyDraftsID,
|
|
richtext: textToLexicalJSON({ text: 'richtext' }),
|
|
richtextWithCustomDiff: textToLexicalJSON({ text: 'richtextWithCustomDiff' }),
|
|
select: 'option1',
|
|
text: 'text',
|
|
textArea: 'textArea',
|
|
textInCollapsible: 'textInCollapsible',
|
|
textInRow: 'textInRow',
|
|
textInUnnamedTab2: 'textInUnnamedTab2',
|
|
upload: uploadedImage,
|
|
},
|
|
depth: 0,
|
|
})
|
|
|
|
const updatedDiffDoc = await _payload.update({
|
|
id: diffDoc.id,
|
|
collection: diffCollectionSlug,
|
|
locale: 'en',
|
|
data: {
|
|
array: [
|
|
{
|
|
textInArray: 'textInArray2',
|
|
},
|
|
],
|
|
arrayLocalized: [
|
|
{
|
|
textInArrayLocalized: 'textInArrayLocalized2',
|
|
},
|
|
],
|
|
blocks: [
|
|
{
|
|
blockType: 'TextBlock',
|
|
textInBlock: 'textInBlock2',
|
|
},
|
|
{
|
|
blockType: 'CollapsibleBlock',
|
|
textInCollapsibleInCollapsibleBlock: 'textInCollapsibleInCollapsibleBlock2',
|
|
textInRowInCollapsibleBlock: 'textInRowInCollapsibleBlock2',
|
|
},
|
|
{
|
|
blockType: 'TabsBlock',
|
|
namedTab1InBlock: {
|
|
textInNamedTab1InBlock: 'textInNamedTab1InBlock2',
|
|
},
|
|
textInUnnamedTab2InBlock: 'textInUnnamedTab2InBlock2',
|
|
},
|
|
],
|
|
checkbox: false,
|
|
code: 'code2',
|
|
date: '2023-01-01T00:00:00.000Z',
|
|
email: 'email2@email.com',
|
|
group: {
|
|
textInGroup: 'textInGroup2',
|
|
},
|
|
namedTab1: {
|
|
textInNamedTab1: 'textInNamedTab12',
|
|
},
|
|
number: 2,
|
|
point: [1, 3],
|
|
radio: 'option2',
|
|
relationship: draft2.id,
|
|
richtext: textToLexicalJSON({ text: 'richtext2' }),
|
|
richtextWithCustomDiff: textToLexicalJSON({ text: 'richtextWithCustomDiff2' }),
|
|
select: 'option2',
|
|
text: 'text2',
|
|
textArea: 'textArea2',
|
|
textInCollapsible: 'textInCollapsible2',
|
|
textInRow: 'textInRow2',
|
|
textInUnnamedTab2: 'textInUnnamedTab22',
|
|
upload: uploadedImage2,
|
|
},
|
|
depth: 0,
|
|
})
|
|
}
|