fix: cascade graphql locales through relationships (#6166)

This commit is contained in:
Jarrod Flesch
2024-05-03 08:33:53 -04:00
committed by GitHub
parent 27ea117731
commit e25814e1ee
13 changed files with 1244 additions and 71 deletions

View File

@@ -36,6 +36,10 @@ export const pointSlug = 'point'
export const errorOnHookSlug = 'error-on-hooks'
export default buildConfigWithDefaults({
localization: {
defaultLocale: 'en',
locales: ['en', 'es'],
},
collections: [
{
access: openAccess,
@@ -333,6 +337,22 @@ export default buildConfigWithDefaults({
],
slug: 'content-type',
},
{
slug: 'cyclical-relationship',
access: openAccess,
fields: [
{
name: 'title',
type: 'text',
localized: true,
},
{
name: 'relationToSelf',
type: 'relationship',
relationTo: 'cyclical-relationship',
},
],
},
],
graphQL: {
queries: (GraphQL) => {

View File

@@ -960,6 +960,44 @@ describe('collections-graphql', () => {
expect(docs[0].relationHasManyField).toHaveLength(0)
})
it('should query relationships with locale', async () => {
const newDoc = await payload.create({
collection: 'cyclical-relationship',
data: {
title: {
en: 'English title',
es: 'Spanish title',
},
},
locale: '*',
})
await payload.update({
collection: 'cyclical-relationship',
id: newDoc.id,
data: {
relationToSelf: newDoc.id,
},
})
const query = `query {
CyclicalRelationships(locale: es) {
docs {
title
relationToSelf {
title
}
}
}
}`
const res = await restClient
.GRAPHQL_POST({ body: JSON.stringify({ query }) })
.then((res) => res.json())
const queriedDoc = res.data.CyclicalRelationships.docs[0]
expect(queriedDoc.title).toEqual(queriedDoc.relationToSelf.title)
})
})
})

View File

@@ -1,4 +1,5 @@
/* tslint:disable */
/* eslint-disable */
/**
* This file was automatically generated by Payload.
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
@@ -8,99 +9,226 @@
export interface Config {
collections: {
users: User
point: Point
posts: Post
'custom-ids': CustomId
relation: Relation
dummy: Dummy
'error-on-hooks': ErrorOnHook
'payload-api-test-ones': PayloadApiTestOne
'payload-api-test-twos': PayloadApiTestTwo
'content-type': ContentType
'cyclical-relationship': CyclicalRelationship
'payload-preferences': PayloadPreference
'payload-migrations': PayloadMigration
}
globals: {}
locale: 'en' | 'es'
user: User & {
collection: 'users'
}
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "users".
*/
export interface User {
id: string
updatedAt: string
createdAt: string
email?: string
resetPasswordToken?: string
resetPasswordExpiration?: string
loginAttempts?: number
lockUntil?: string
password?: string
email: string
resetPasswordToken?: string | null
resetPasswordExpiration?: string | null
salt?: string | null
hash?: string | null
loginAttempts?: number | null
lockUntil?: string | null
password?: string | null
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "point".
*/
export interface Point {
id: string
/**
* @minItems 2
* @maxItems 2
*/
point?: [number, number] | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "posts".
*/
export interface Post {
id: string
title?: string
description?: string
number?: number
min?: number
relationField?: string | Relation
relationToCustomID?: number | CustomId
relationHasManyField?: string[] | Relation[]
title?: string | null
description?: string | null
number?: number | null
min?: number | null
relationField?: (string | null) | Relation
relationToCustomID?: (number | null) | CustomId
relationHasManyField?: (string | Relation)[] | null
relationMultiRelationTo?:
| {
value: string | Relation
| ({
relationTo: 'relation'
}
| {
value: string | Dummy
value: string | Relation
} | null)
| ({
relationTo: 'dummy'
}
value: string | Dummy
} | null)
relationMultiRelationToHasMany?:
| (
| {
value: string
relationTo: 'relation'
value: string | Relation
}
| {
value: string
relationTo: 'dummy'
}
)[]
| (
| {
value: Relation
relationTo: 'relation'
}
| {
value: Dummy
relationTo: 'dummy'
value: string | Dummy
}
)[]
| null
A1?: {
A2?: string
A2?: string | null
}
B1?: {
B2?: string
B2?: string | null
}
C1?: {
C2Text?: string | null
C2?: {
C3?: string
C3?: string | null
}
}
D1: {
D2?: {
D3?: {
D4?: string
D4?: string | null
}
}
}
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "relation".
*/
export interface Relation {
id: string
name?: string
name?: string | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "custom-ids".
*/
export interface CustomId {
id: number
title?: string
title?: string | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "dummy".
*/
export interface Dummy {
id: string
name?: string
name?: string | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "error-on-hooks".
*/
export interface ErrorOnHook {
id: string
title?: string | null
errorBeforeChange?: boolean | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-api-test-ones".
*/
export interface PayloadApiTestOne {
id: string
payloadAPI?: string | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-api-test-twos".
*/
export interface PayloadApiTestTwo {
id: string
payloadAPI?: string | null
relation?: (string | null) | PayloadApiTestOne
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "content-type".
*/
export interface ContentType {
id: string
contentType?: string | null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "cyclical-relationship".
*/
export interface CyclicalRelationship {
id: string
title?: string | null
relationToSelf?: (string | null) | CyclicalRelationship
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-preferences".
*/
export interface PayloadPreference {
id: string
user: {
relationTo: 'users'
value: string | User
}
key?: string | null
value?:
| {
[k: string]: unknown
}
| unknown[]
| string
| number
| boolean
| null
updatedAt: string
createdAt: string
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "payload-migrations".
*/
export interface PayloadMigration {
id: string
name?: string | null
batch?: number | null
updatedAt: string
createdAt: string
}

File diff suppressed because it is too large Load Diff