Skip to content

Commit fa1d828

Browse files
committed
fix(wordpress): fix group & union resolvers
1 parent 7d54892 commit fa1d828

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

packages/smooth-backend-wordpress/src/acf/resolvers/createDefaultResolvers.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
import { toRelativeUrl, formatDate, formatDateTime } from './util'
22

3+
function acfField(object, name) {
4+
if (object.acf) {
5+
return object.acf[name] || null
6+
}
7+
8+
return object[name] || null
9+
}
10+
311
const handlers = {
412
date({ name, list }) {
513
if (list) return null
6-
return object => formatDate(object.acf[name])
14+
return object => formatDate(acfField(object, name))
715
},
816
dateTime({ name, list }) {
917
if (list) return null
10-
return object => formatDateTime(object.acf[name])
18+
return object => formatDateTime(acfField(object, name))
1119
},
1220
link({ name, list }, helpers, state) {
1321
const { homeUrl } = state.options
1422
if (list) return null
1523
return object => {
16-
const link = object.acf[name]
24+
const link = acfField(object, name)
1725
if (!link) return null
1826
return {
1927
...link,
@@ -23,11 +31,17 @@ const handlers = {
2331
},
2432
shortText({ name, list }) {
2533
if (!list) return null
26-
return object => (object.acf[name] ? object.acf[name].split(',') : null)
34+
return object => {
35+
const value = acfField(object, name)
36+
return value ? value.split(',') : null
37+
}
2738
},
2839
longText({ name, list }) {
2940
if (!list) return null
30-
return object => (object.acf[name] ? object.acf[name].split('\n') : null)
41+
return object => {
42+
const value = acfField(object, name)
43+
return value ? value.split('\n') : null
44+
}
3145
},
3246
}
3347

@@ -47,7 +61,7 @@ function getFieldResolver(node, helpers, state) {
4761
return null
4862
}
4963
const defaultResolver = {
50-
[name]: object => object.acf[name] || null,
64+
[name]: object => acfField(object, name),
5165
}
5266
const handler = handlers[infos.type.name]
5367
if (!handler) return defaultResolver
@@ -121,10 +135,7 @@ function one(node, helpers, state) {
121135
}
122136
}
123137

124-
if (
125-
t.isObjectTypeDefinition(node) &&
126-
(t.getDirective(node, 'content') || t.getDirective(node, 'block'))
127-
) {
138+
if (t.isObjectTypeDefinition(node)) {
128139
const name = t.getName(node)
129140
return {
130141
[name]: getFieldResolvers(node.fields, helpers, state),

packages/smooth-backend-wordpress/src/acf/resolvers/createDefaultResolvers.test.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,15 @@ import createDefaultResolvers from './createDefaultResolvers'
44
describe('createDefaultResolvers', () => {
55
it('should create default resolvers', () => {
66
const typeDefs = gql`
7+
type Group {
8+
shortText: String @field(type: shortText)
9+
shortTextArray: [String] @field(type: shortText)
10+
image: Image @field
11+
}
12+
713
type Book @content {
814
name: String! @field
15+
group: Group @field
916
}
1017
1118
type BookCard @block {
@@ -24,5 +31,10 @@ describe('createDefaultResolvers', () => {
2431
expect(
2532
resolvers.BookCard.multiple({ acf: { multiple: 'hello,you' } }),
2633
).toEqual(['hello', 'you'])
34+
expect(resolvers.Group.image({ image: false })).toBe(null)
35+
expect(resolvers.Group.shortText({ shortText: 'Hello' })).toBe('Hello')
36+
expect(
37+
resolvers.Group.shortTextArray({ shortTextArray: 'Hello,foo,bar' }),
38+
).toEqual(['Hello', 'foo', 'bar'])
2739
})
2840
})

0 commit comments

Comments
 (0)