import type { Collection1 } from './payload-types' import payload from '../../packages/payload/src' import { devUser } from '../credentials' import { initPayloadTest } from '../helpers/configHelpers' import { collection1Slug, versionedRelationshipFieldSlug } from './collectionSlugs' let apiUrl: string let jwt const headers = { 'Content-Type': 'application/json', } const { email, password } = devUser describe('Relationship Fields', () => { beforeAll(async () => { const { serverURL } = await initPayloadTest({ __dirname, init: { local: false } }) apiUrl = `${serverURL}/api` const response = await fetch(`${apiUrl}/users/login`, { body: JSON.stringify({ email, password, }), headers, method: 'post', }) const data = await response.json() jwt = data.token }) afterAll(async () => { if (typeof payload.db.destroy === 'function') { await payload.db.destroy(payload) } }) describe('Versioned Relationship Field', () => { let version2ID: string const relatedDocName = 'Related Doc' beforeAll(async () => { const relatedDoc = await payload.create({ collection: collection1Slug, data: { name: relatedDocName, }, }) const version1 = await payload.create({ collection: versionedRelationshipFieldSlug, data: { title: 'Version 1 Title', relationshipField: { value: relatedDoc.id, relationTo: collection1Slug, }, }, }) const version2 = await payload.update({ collection: versionedRelationshipFieldSlug, id: version1.id, data: { title: 'Version 2 Title', }, }) const versions = await payload.findVersions({ collection: versionedRelationshipFieldSlug, where: { parent: { equals: version2.id, }, }, sort: '-updatedAt', limit: 1, }) version2ID = versions.docs[0].id }) it('should return the correct versioned relationship field via REST', async () => { const version2Data = await fetch( `${apiUrl}/${versionedRelationshipFieldSlug}/versions/${version2ID}?locale=all`, { method: 'GET', headers: { ...headers, Authorization: `JWT ${jwt}`, }, }, ).then((res) => res.json()) expect(version2Data.version.title).toEqual('Version 2 Title') expect(version2Data.version.relationshipField[0].value.name).toEqual(relatedDocName) }) it('should return the correct versioned relationship field via LocalAPI', async () => { const version2Data = await payload.findVersionByID({ collection: versionedRelationshipFieldSlug, id: version2ID, locale: 'all', }) expect(version2Data.version.title).toEqual('Version 2 Title') expect((version2Data.version.relationshipField[0].value as Collection1).name).toEqual( relatedDocName, ) }) }) })