diff --git a/packages/payload/src/graphql/schema/buildObjectType.ts b/packages/payload/src/graphql/schema/buildObjectType.ts index 77cb2ec444..391cb8e89a 100644 --- a/packages/payload/src/graphql/schema/buildObjectType.ts +++ b/packages/payload/src/graphql/schema/buildObjectType.ts @@ -609,6 +609,7 @@ function buildObjectType({ const locale = args.locale || context.req.locale const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale const id = value + const draft = args.draft ?? context.req.query?.draft if (id) { const relatedDocument = await context.req.payloadDataLoader.load( @@ -622,6 +623,7 @@ function buildObjectType({ fallbackLocale, false, false, + Boolean(draft), ]), ) diff --git a/test/collections-graphql/config.ts b/test/collections-graphql/config.ts index 8a442089d0..c9b7f5583a 100644 --- a/test/collections-graphql/config.ts +++ b/test/collections-graphql/config.ts @@ -358,11 +358,27 @@ export default buildConfigWithDefaults({ type: 'relationship', relationTo: ['cyclical-relationship'], }, + { + type: 'upload', + name: 'media', + relationTo: 'media', + }, ], versions: { drafts: true, }, }, + { + slug: 'media', + access: openAccess, + upload: true, + fields: [ + { + name: 'title', + type: 'text', + }, + ], + }, ], graphQL: { queries: (GraphQL) => { diff --git a/test/collections-graphql/int.spec.ts b/test/collections-graphql/int.spec.ts index cba62d48b5..a9eb910a59 100644 --- a/test/collections-graphql/int.spec.ts +++ b/test/collections-graphql/int.spec.ts @@ -1,8 +1,10 @@ import { GraphQLClient } from 'graphql-request' +import path from 'path' import type { Post } from './payload-types' import payload from '../../packages/payload/src' +import getFileByPath from '../../packages/payload/src/uploads/getFileByPath' import { mapAsync } from '../../packages/payload/src/utilities/mapAsync' import { initPayloadTest } from '../helpers/configHelpers' import { idToString } from '../helpers/idToString' @@ -945,6 +947,42 @@ describe('collections-graphql', () => { expect(queriedDoc.title).toEqual('2') expect(queriedDoc.relationToSelf.title).toEqual('1') }) + + it('should query upload enabled docs', async () => { + const file = await getFileByPath(path.resolve(__dirname, '../uploads/test-image.jpg')) + + const mediaDoc = await payload.create({ + collection: 'media', + file, + data: { + title: 'example', + }, + }) + + // doc with upload relation + const newDoc = await payload.create({ + collection: 'cyclical-relationship', + data: { + media: mediaDoc.id, + }, + }) + + const query = `{ + CyclicalRelationship(id: ${ + typeof newDoc.id === 'number' ? newDoc.id : `"${newDoc.id}"` + }) { + media { + id + title + } + } + }` + const response = (await client.request(query)) as any + + const queriedDoc = response.CyclicalRelationship + expect(queriedDoc.media.id).toEqual(mediaDoc.id) + expect(queriedDoc.media.title).toEqual('example') + }) }) })