@commitspark/graphql-api 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +7 -6
  3. package/dist/app/api.service.js.map +1 -0
  4. package/dist/container.js.map +1 -0
  5. package/dist/graphql/apollo-config-factory.service.js.map +1 -0
  6. package/dist/graphql/input-type-generator.service.js.map +1 -0
  7. package/dist/graphql/queries-mutations-generator.service.js.map +1 -0
  8. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.js.map +1 -0
  9. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -0
  10. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -0
  11. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.js.map +1 -0
  12. package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -0
  13. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -0
  14. package/dist/graphql/resolver-generators/query-count-all-resolver-generator.js.map +1 -0
  15. package/dist/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +1 -0
  16. package/dist/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -0
  17. package/dist/graphql/resolver-generators/union-value-resolver-generator.js.map +1 -0
  18. package/dist/graphql/schema-analyzer.service.js.map +1 -0
  19. package/dist/graphql/schema-generator.service.js.map +1 -0
  20. package/dist/graphql/schema-root-type-generator.service.js.map +1 -0
  21. package/dist/graphql/schema-utils/entry-reference-util.js.map +1 -0
  22. package/dist/graphql/schema-validator.js.map +1 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/{src/persistence → persistence}/persistence.service.js +1 -1
  25. package/dist/persistence/persistence.service.js.map +1 -0
  26. package/dist/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +9 -1
  28. package/src/persistence/persistence.service.ts +1 -1
  29. package/.eslintrc.js +0 -25
  30. package/.github/workflows/jest.yaml +0 -17
  31. package/.github/workflows/lint.yaml +0 -17
  32. package/.prettierrc +0 -6
  33. package/dist/jest.config.d.ts +0 -7
  34. package/dist/jest.config.js +0 -12
  35. package/dist/jest.config.js.map +0 -1
  36. package/dist/src/app/api.service.js.map +0 -1
  37. package/dist/src/container.js.map +0 -1
  38. package/dist/src/graphql/apollo-config-factory.service.js.map +0 -1
  39. package/dist/src/graphql/input-type-generator.service.js.map +0 -1
  40. package/dist/src/graphql/queries-mutations-generator.service.js.map +0 -1
  41. package/dist/src/graphql/resolver-generators/entry-reference-resolver.generator.js.map +0 -1
  42. package/dist/src/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  43. package/dist/src/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  44. package/dist/src/graphql/resolver-generators/mutation-update.resolver-generator.js.map +0 -1
  45. package/dist/src/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  46. package/dist/src/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  47. package/dist/src/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  48. package/dist/src/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  49. package/dist/src/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  50. package/dist/src/graphql/resolver-generators/union-value-resolver-generator.js.map +0 -1
  51. package/dist/src/graphql/schema-analyzer.service.js.map +0 -1
  52. package/dist/src/graphql/schema-generator.service.js.map +0 -1
  53. package/dist/src/graphql/schema-root-type-generator.service.js.map +0 -1
  54. package/dist/src/graphql/schema-utils/entry-reference-util.js.map +0 -1
  55. package/dist/src/graphql/schema-validator.js.map +0 -1
  56. package/dist/src/index.js.map +0 -1
  57. package/dist/src/persistence/persistence.service.js.map +0 -1
  58. package/dist/tests/integration/mutation/create.test.d.ts +0 -1
  59. package/dist/tests/integration/mutation/create.test.js +0 -78
  60. package/dist/tests/integration/mutation/create.test.js.map +0 -1
  61. package/dist/tests/integration/mutation/delete.test.d.ts +0 -1
  62. package/dist/tests/integration/mutation/delete.test.js +0 -117
  63. package/dist/tests/integration/mutation/delete.test.js.map +0 -1
  64. package/dist/tests/integration/mutation/update.test.d.ts +0 -1
  65. package/dist/tests/integration/mutation/update.test.js +0 -134
  66. package/dist/tests/integration/mutation/update.test.js.map +0 -1
  67. package/dist/tests/integration/query/query.test.d.ts +0 -1
  68. package/dist/tests/integration/query/query.test.js +0 -237
  69. package/dist/tests/integration/query/query.test.js.map +0 -1
  70. package/dist/tests/integration/schema/schema-generator.test.d.ts +0 -1
  71. package/dist/tests/integration/schema/schema-generator.test.js +0 -381
  72. package/dist/tests/integration/schema/schema-generator.test.js.map +0 -1
  73. package/jest.config.ts +0 -14
  74. package/tests/integration/mutation/create.test.ts +0 -89
  75. package/tests/integration/mutation/delete.test.ts +0 -133
  76. package/tests/integration/mutation/update.test.ts +0 -151
  77. package/tests/integration/query/query.test.ts +0 -253
  78. package/tests/integration/schema/schema-generator.test.ts +0 -399
  79. package/tsconfig.build.json +0 -10
  80. package/tsconfig.json +0 -18
  81. package/webpack.config.js +0 -25
  82. /package/dist/{src/app → app}/api.service.d.ts +0 -0
  83. /package/dist/{src/app → app}/api.service.js +0 -0
  84. /package/dist/{src/container.d.ts → container.d.ts} +0 -0
  85. /package/dist/{src/container.js → container.js} +0 -0
  86. /package/dist/{src/graphql → graphql}/apollo-config-factory.service.d.ts +0 -0
  87. /package/dist/{src/graphql → graphql}/apollo-config-factory.service.js +0 -0
  88. /package/dist/{src/graphql → graphql}/input-type-generator.service.d.ts +0 -0
  89. /package/dist/{src/graphql → graphql}/input-type-generator.service.js +0 -0
  90. /package/dist/{src/graphql → graphql}/queries-mutations-generator.service.d.ts +0 -0
  91. /package/dist/{src/graphql → graphql}/queries-mutations-generator.service.js +0 -0
  92. /package/dist/{src/graphql → graphql}/resolver-generators/entry-reference-resolver.generator.d.ts +0 -0
  93. /package/dist/{src/graphql → graphql}/resolver-generators/entry-reference-resolver.generator.js +0 -0
  94. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-create-resolver-generator.d.ts +0 -0
  95. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-create-resolver-generator.js +0 -0
  96. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-delete-resolver-generator.d.ts +0 -0
  97. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-delete-resolver-generator.js +0 -0
  98. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-update.resolver-generator.d.ts +0 -0
  99. /package/dist/{src/graphql → graphql}/resolver-generators/mutation-update.resolver-generator.js +0 -0
  100. /package/dist/{src/graphql → graphql}/resolver-generators/query-all-resolver-generator.d.ts +0 -0
  101. /package/dist/{src/graphql → graphql}/resolver-generators/query-all-resolver-generator.js +0 -0
  102. /package/dist/{src/graphql → graphql}/resolver-generators/query-by-id-resolver-generator.d.ts +0 -0
  103. /package/dist/{src/graphql → graphql}/resolver-generators/query-by-id-resolver-generator.js +0 -0
  104. /package/dist/{src/graphql → graphql}/resolver-generators/query-count-all-resolver-generator.d.ts +0 -0
  105. /package/dist/{src/graphql → graphql}/resolver-generators/query-count-all-resolver-generator.js +0 -0
  106. /package/dist/{src/graphql → graphql}/resolver-generators/query-type-by-id-resolver-generator.d.ts +0 -0
  107. /package/dist/{src/graphql → graphql}/resolver-generators/query-type-by-id-resolver-generator.js +0 -0
  108. /package/dist/{src/graphql → graphql}/resolver-generators/union-type-resolver-generator.d.ts +0 -0
  109. /package/dist/{src/graphql → graphql}/resolver-generators/union-type-resolver-generator.js +0 -0
  110. /package/dist/{src/graphql → graphql}/resolver-generators/union-value-resolver-generator.d.ts +0 -0
  111. /package/dist/{src/graphql → graphql}/resolver-generators/union-value-resolver-generator.js +0 -0
  112. /package/dist/{src/graphql → graphql}/schema-analyzer.service.d.ts +0 -0
  113. /package/dist/{src/graphql → graphql}/schema-analyzer.service.js +0 -0
  114. /package/dist/{src/graphql → graphql}/schema-generator.service.d.ts +0 -0
  115. /package/dist/{src/graphql → graphql}/schema-generator.service.js +0 -0
  116. /package/dist/{src/graphql → graphql}/schema-root-type-generator.service.d.ts +0 -0
  117. /package/dist/{src/graphql → graphql}/schema-root-type-generator.service.js +0 -0
  118. /package/dist/{src/graphql → graphql}/schema-utils/entry-reference-util.d.ts +0 -0
  119. /package/dist/{src/graphql → graphql}/schema-utils/entry-reference-util.js +0 -0
  120. /package/dist/{src/graphql → graphql}/schema-validator.d.ts +0 -0
  121. /package/dist/{src/graphql → graphql}/schema-validator.js +0 -0
  122. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  123. /package/dist/{src/index.js → index.js} +0 -0
  124. /package/dist/{src/persistence → persistence}/persistence.service.d.ts +0 -0
@@ -1,89 +0,0 @@
1
- import {
2
- Commit,
3
- CommitDraft,
4
- ContentEntry,
5
- GitAdapter,
6
- } from '@commitspark/git-adapter'
7
- import { Matcher, mock } from 'jest-mock-extended'
8
- import { getApiService } from '../../../src'
9
-
10
- describe('"Create" mutation resolvers', () => {
11
- it('should create an entry', async () => {
12
- const gitAdapter = mock<GitAdapter>()
13
- const gitRef = 'myRef'
14
- const commitHash = 'abcd'
15
- const originalSchema = `directive @Entry on OBJECT
16
-
17
- type EntryA @Entry {
18
- id: ID!
19
- name: String
20
- }`
21
-
22
- const commitMessage = 'My message'
23
- const entryAId = 'A'
24
- const postCommitHash = 'ef01'
25
-
26
- const mutationData = {
27
- name: 'My name',
28
- }
29
- const commitResult: Commit = {
30
- ref: postCommitHash,
31
- }
32
- const newEntry: ContentEntry = {
33
- id: entryAId,
34
- metadata: {
35
- type: 'EntryA',
36
- },
37
- data: {
38
- name: mutationData.name,
39
- },
40
- }
41
-
42
- const commitDraft: CommitDraft = {
43
- ref: gitRef,
44
- parentSha: commitHash,
45
- contentEntries: [{ ...newEntry, deletion: false }],
46
- message: commitMessage,
47
- }
48
-
49
- const commitDraftMatcher = new Matcher<CommitDraft>((actualValue) => {
50
- return JSON.stringify(actualValue) === JSON.stringify(commitDraft)
51
- }, '')
52
-
53
- gitAdapter.getLatestCommitHash
54
- .calledWith(gitRef)
55
- .mockResolvedValue(commitHash)
56
- gitAdapter.getSchema
57
- .calledWith(commitHash)
58
- .mockResolvedValue(originalSchema)
59
- gitAdapter.getContentEntries.calledWith(commitHash).mockResolvedValue([])
60
- gitAdapter.createCommit
61
- .calledWith(commitDraftMatcher)
62
- .mockResolvedValue(commitResult)
63
- gitAdapter.getContentEntries
64
- .calledWith(postCommitHash)
65
- .mockResolvedValue([newEntry])
66
-
67
- const apiService = await getApiService()
68
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
69
- query: `mutation ($id: ID!, $mutationData: EntryAInput!, $commitMessage: String!){
70
- data: createEntryA(id: $id, data: $mutationData, message:$commitMessage) {
71
- id
72
- }
73
- }`,
74
- variables: {
75
- id: entryAId,
76
- mutationData: mutationData,
77
- commitMessage: commitMessage,
78
- },
79
- })
80
-
81
- expect(result.errors).toBeUndefined()
82
- expect(result.data).toEqual({
83
- data: {
84
- id: entryAId,
85
- },
86
- })
87
- expect(result.ref).toBe(postCommitHash)
88
- })
89
- })
@@ -1,133 +0,0 @@
1
- import {
2
- Commit,
3
- CommitDraft,
4
- ContentEntry,
5
- GitAdapter,
6
- } from '@commitspark/git-adapter'
7
- import { Matcher, mock } from 'jest-mock-extended'
8
- import { getApiService } from '../../../src'
9
-
10
- describe('"Delete" mutation resolvers', () => {
11
- it('should delete an entry', async () => {
12
- const gitAdapter = mock<GitAdapter>()
13
- const gitRef = 'myRef'
14
- const commitHash = 'abcd'
15
- const originalSchema = `directive @Entry on OBJECT
16
-
17
- type EntryA @Entry {
18
- id: ID!
19
- name: String
20
- }`
21
-
22
- const commitMessage = 'My message'
23
- const entryAId = 'A'
24
- const postCommitHash = 'ef01'
25
-
26
- const commitResult: Commit = {
27
- ref: postCommitHash,
28
- }
29
- const entry: ContentEntry = {
30
- id: entryAId,
31
- metadata: {
32
- type: 'EntryA',
33
- },
34
- data: {
35
- name: 'My name',
36
- },
37
- }
38
-
39
- const commitDraft: CommitDraft = {
40
- ref: gitRef,
41
- parentSha: commitHash,
42
- contentEntries: [
43
- {
44
- id: entryAId,
45
- metadata: { type: 'EntryA' },
46
- data: {},
47
- deletion: true,
48
- },
49
- ],
50
- message: commitMessage,
51
- }
52
-
53
- const commitDraftMatcher = new Matcher<CommitDraft>((actualValue) => {
54
- return JSON.stringify(actualValue) === JSON.stringify(commitDraft)
55
- }, '')
56
-
57
- gitAdapter.getLatestCommitHash
58
- .calledWith(gitRef)
59
- .mockResolvedValue(commitHash)
60
- gitAdapter.getSchema
61
- .calledWith(commitHash)
62
- .mockResolvedValue(originalSchema)
63
- gitAdapter.getContentEntries
64
- .calledWith(commitHash)
65
- .mockResolvedValue([entry])
66
- gitAdapter.createCommit
67
- .calledWith(commitDraftMatcher)
68
- .mockResolvedValue(commitResult)
69
-
70
- const apiService = await getApiService()
71
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
72
- query: `mutation ($id: ID!, $commitMessage: String!){
73
- data: deleteEntryA(id: $id, message:$commitMessage) {
74
- id
75
- }
76
- }`,
77
- variables: {
78
- id: entryAId,
79
- commitMessage: commitMessage,
80
- },
81
- })
82
-
83
- expect(result.errors).toBeUndefined()
84
- expect(result.data).toEqual({
85
- data: {
86
- id: entryAId,
87
- },
88
- })
89
- expect(result.ref).toBe(postCommitHash)
90
- })
91
-
92
- it('should return an error when trying to delete a non-existent entry', async () => {
93
- const gitAdapter = mock<GitAdapter>()
94
- const gitRef = 'myRef'
95
- const commitHash = 'abcd'
96
- const originalSchema = `directive @Entry on OBJECT
97
-
98
- type EntryA @Entry {
99
- id: ID!
100
- name: String
101
- }`
102
-
103
- const commitMessage = 'My message'
104
- const entryAId = 'A'
105
-
106
- gitAdapter.getLatestCommitHash
107
- .calledWith(gitRef)
108
- .mockResolvedValue(commitHash)
109
- gitAdapter.getSchema
110
- .calledWith(commitHash)
111
- .mockResolvedValue(originalSchema)
112
- gitAdapter.getContentEntries.calledWith(commitHash).mockResolvedValue([])
113
-
114
- const apiService = await getApiService()
115
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
116
- query: `mutation ($id: ID!, $commitMessage: String!){
117
- data: deleteEntryA(id: $id, message:$commitMessage) {
118
- id
119
- }
120
- }`,
121
- variables: {
122
- id: entryAId,
123
- commitMessage: commitMessage,
124
- },
125
- })
126
-
127
- expect(result.errors).toMatchObject([
128
- { extensions: { argumentName: 'id', code: 'BAD_USER_INPUT' } },
129
- ])
130
- expect(result.data).toEqual({ data: null })
131
- expect(result.ref).toBe(commitHash)
132
- })
133
- })
@@ -1,151 +0,0 @@
1
- import {
2
- Commit,
3
- CommitDraft,
4
- ContentEntry,
5
- GitAdapter,
6
- } from '@commitspark/git-adapter'
7
- import { Matcher, mock } from 'jest-mock-extended'
8
- import { getApiService } from '../../../src'
9
-
10
- describe('"Update" mutation resolvers', () => {
11
- it('should update an entry', async () => {
12
- const gitAdapter = mock<GitAdapter>()
13
- const gitRef = 'myRef'
14
- const commitHash = 'abcd'
15
- const originalSchema = `directive @Entry on OBJECT
16
-
17
- type EntryA @Entry {
18
- id: ID!
19
- name: String
20
- }`
21
-
22
- const commitMessage = 'My message'
23
- const entryAId = 'A'
24
- const postCommitHash = 'ef01'
25
-
26
- const mutationData = {
27
- name: 'My name',
28
- }
29
- const commitResult: Commit = {
30
- ref: postCommitHash,
31
- }
32
- const originalEntry: ContentEntry = {
33
- id: entryAId,
34
- metadata: {
35
- type: 'EntryA',
36
- },
37
- data: {
38
- name: `${mutationData.name}1`,
39
- },
40
- }
41
-
42
- const updatedEntry: ContentEntry = {
43
- id: entryAId,
44
- metadata: {
45
- type: 'EntryA',
46
- },
47
- data: {
48
- name: `${mutationData.name}2`,
49
- },
50
- }
51
-
52
- const commitDraft: CommitDraft = {
53
- ref: gitRef,
54
- parentSha: commitHash,
55
- contentEntries: [{ ...updatedEntry, deletion: false }],
56
- message: commitMessage,
57
- }
58
-
59
- const commitDraftMatcher = new Matcher<CommitDraft>((actualValue) => {
60
- return JSON.stringify(actualValue) === JSON.stringify(commitDraft)
61
- }, '')
62
-
63
- gitAdapter.getLatestCommitHash
64
- .calledWith(gitRef)
65
- .mockResolvedValue(commitHash)
66
- gitAdapter.getSchema
67
- .calledWith(commitHash)
68
- .mockResolvedValue(originalSchema)
69
- gitAdapter.getContentEntries
70
- .calledWith(commitHash)
71
- .mockResolvedValue([originalEntry])
72
- gitAdapter.createCommit
73
- .calledWith(commitDraftMatcher)
74
- .mockResolvedValue(commitResult)
75
- gitAdapter.getContentEntries
76
- .calledWith(postCommitHash)
77
- .mockResolvedValue([updatedEntry])
78
-
79
- const apiService = await getApiService()
80
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
81
- query: `mutation ($id: ID!, $mutationData: EntryAInput!, $commitMessage: String!){
82
- data: updateEntryA(id: $id, data: $mutationData, message:$commitMessage) {
83
- id
84
- name
85
- }
86
- }`,
87
- variables: {
88
- id: entryAId,
89
- mutationData: {
90
- name: `${mutationData.name}2`,
91
- },
92
- commitMessage: commitMessage,
93
- },
94
- })
95
-
96
- expect(result.errors).toBeUndefined()
97
- expect(result.data).toEqual({
98
- data: {
99
- id: entryAId,
100
- name: `${mutationData.name}2`,
101
- },
102
- })
103
- expect(result.ref).toBe(postCommitHash)
104
- })
105
-
106
- it('should return an error when trying to update a non-existent entry', async () => {
107
- const gitAdapter = mock<GitAdapter>()
108
- const gitRef = 'myRef'
109
- const commitHash = 'abcd'
110
- const originalSchema = `directive @Entry on OBJECT
111
-
112
- type EntryA @Entry {
113
- id: ID!
114
- name: String
115
- }`
116
-
117
- const commitMessage = 'My message'
118
- const entryAId = 'A'
119
-
120
- gitAdapter.getLatestCommitHash
121
- .calledWith(gitRef)
122
- .mockResolvedValue(commitHash)
123
- gitAdapter.getSchema
124
- .calledWith(commitHash)
125
- .mockResolvedValue(originalSchema)
126
- gitAdapter.getContentEntries.calledWith(commitHash).mockResolvedValue([])
127
-
128
- const apiService = await getApiService()
129
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
130
- query: `mutation ($id: ID!, $mutationData: EntryAInput!, $commitMessage: String!){
131
- data: updateEntryA(id: $id, data: $mutationData, message:$commitMessage) {
132
- id
133
- name
134
- }
135
- }`,
136
- variables: {
137
- id: entryAId,
138
- mutationData: {
139
- name: '2',
140
- },
141
- commitMessage: commitMessage,
142
- },
143
- })
144
-
145
- expect(result.errors).toMatchObject([
146
- { extensions: { argumentName: 'id', code: 'BAD_USER_INPUT' } },
147
- ])
148
- expect(result.data).toEqual({ data: null })
149
- expect(result.ref).toBe(commitHash)
150
- })
151
- })
@@ -1,253 +0,0 @@
1
- import { ContentEntry, GitAdapter } from '@commitspark/git-adapter'
2
- import { mock } from 'jest-mock-extended'
3
- import { getApiService } from '../../../src'
4
-
5
- describe('Query resolvers', () => {
6
- it('should resolve reference to a second @Entry', async () => {
7
- const gitAdapter = mock<GitAdapter>()
8
- const gitRef = 'myRef'
9
- const commitHash = 'abcd'
10
- const originalSchema = `directive @Entry on OBJECT
11
-
12
- type EntryA @Entry {
13
- id: ID!
14
- name: String
15
- }
16
-
17
- type EntryB @Entry {
18
- id: ID!
19
- entryA: EntryA
20
- }`
21
-
22
- const entryAId = 'A'
23
- const entryBId = 'B'
24
-
25
- const entries = [
26
- {
27
- id: entryAId,
28
- metadata: {
29
- type: 'EntryA',
30
- },
31
- data: {
32
- name: 'My name',
33
- },
34
- } as ContentEntry,
35
- {
36
- id: entryBId,
37
- metadata: {
38
- type: 'EntryB',
39
- },
40
- data: {
41
- entryA: {
42
- id: entryAId,
43
- },
44
- },
45
- } as ContentEntry,
46
- ]
47
-
48
- gitAdapter.getLatestCommitHash
49
- .calledWith(gitRef)
50
- .mockResolvedValue(commitHash)
51
- gitAdapter.getSchema
52
- .calledWith(commitHash)
53
- .mockResolvedValue(originalSchema)
54
- gitAdapter.getContentEntries
55
- .calledWith(commitHash)
56
- .mockResolvedValue(entries)
57
-
58
- const apiService = await getApiService()
59
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
60
- query: `query {
61
- data: EntryB(id:"${entryBId}") {
62
- id
63
- entryA {
64
- id
65
- name
66
- }
67
- }
68
- }`,
69
- })
70
-
71
- expect(result.errors).toBeUndefined()
72
- expect(result.data).toEqual({
73
- data: {
74
- id: entryBId,
75
- entryA: {
76
- id: entryAId,
77
- name: 'My name',
78
- },
79
- },
80
- })
81
- expect(result.ref).toBe(commitHash)
82
- })
83
-
84
- it('should resolve a non-@Entry-based union', async () => {
85
- const gitAdapter = mock<GitAdapter>()
86
- const gitRef = 'myRef'
87
- const commitHash = 'abcd'
88
- const originalSchema = `directive @Entry on OBJECT
89
-
90
- type MyEntry @Entry {
91
- id: ID!
92
- union: MyUnion
93
- }
94
-
95
- union MyUnion =
96
- | TypeA
97
- | TypeB
98
-
99
- type TypeA {
100
- field1: String
101
- }
102
-
103
- type TypeB {
104
- field2: String
105
- }`
106
-
107
- const entryId = 'A'
108
- const field2Value = 'Field2 value'
109
-
110
- const entries = [
111
- {
112
- id: entryId,
113
- metadata: {
114
- type: 'MyEntry',
115
- },
116
- data: {
117
- union: {
118
- typeB: {
119
- field2: field2Value,
120
- },
121
- },
122
- },
123
- } as ContentEntry,
124
- ]
125
-
126
- gitAdapter.getLatestCommitHash
127
- .calledWith(gitRef)
128
- .mockResolvedValue(commitHash)
129
- gitAdapter.getSchema
130
- .calledWith(commitHash)
131
- .mockResolvedValue(originalSchema)
132
- gitAdapter.getContentEntries
133
- .calledWith(commitHash)
134
- .mockResolvedValue(entries)
135
-
136
- const apiService = await getApiService()
137
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
138
- query: `query {
139
- data: MyEntry(id:"${entryId}") {
140
- id
141
- union {
142
- __typename
143
- ... on TypeB {
144
- field2
145
- }
146
- }
147
- }
148
- }`,
149
- })
150
-
151
- expect(result.errors).toBeUndefined()
152
- expect(result.data).toEqual({
153
- data: {
154
- id: entryId,
155
- union: {
156
- __typename: 'TypeB',
157
- field2: field2Value,
158
- },
159
- },
160
- })
161
- expect(result.ref).toBe(commitHash)
162
- })
163
-
164
- it('should resolve an @Entry-based union', async () => {
165
- const gitAdapter = mock<GitAdapter>()
166
- const gitRef = 'myRef'
167
- const commitHash = 'abcd'
168
- const originalSchema = `directive @Entry on OBJECT
169
-
170
- type MyEntry @Entry {
171
- id: ID!
172
- union: MyUnion
173
- }
174
-
175
- union MyUnion =
176
- | EntryA
177
- | EntryB
178
-
179
- type EntryA @Entry {
180
- id: ID!
181
- field1: String
182
- }
183
-
184
- type EntryB @Entry {
185
- id: ID!
186
- field2: String
187
- }`
188
-
189
- const myEntryId = 'My'
190
- const entryBId = 'B'
191
- const field2Value = 'Field2 value'
192
-
193
- const entries = [
194
- {
195
- id: myEntryId,
196
- metadata: {
197
- type: 'MyEntry',
198
- },
199
- data: {
200
- union: {
201
- id: entryBId,
202
- },
203
- },
204
- } as ContentEntry,
205
- {
206
- id: entryBId,
207
- metadata: {
208
- type: 'EntryB',
209
- },
210
- data: {
211
- field2: field2Value,
212
- },
213
- } as ContentEntry,
214
- ]
215
-
216
- gitAdapter.getLatestCommitHash
217
- .calledWith(gitRef)
218
- .mockResolvedValue(commitHash)
219
- gitAdapter.getSchema
220
- .calledWith(commitHash)
221
- .mockResolvedValue(originalSchema)
222
- gitAdapter.getContentEntries
223
- .calledWith(commitHash)
224
- .mockResolvedValue(entries)
225
-
226
- const apiService = await getApiService()
227
- const result = await apiService.postGraphQL(gitAdapter, gitRef, {
228
- query: `query {
229
- data: MyEntry(id:"${myEntryId}") {
230
- id
231
- union {
232
- __typename
233
- ... on EntryB {
234
- field2
235
- }
236
- }
237
- }
238
- }`,
239
- })
240
-
241
- expect(result.errors).toBeUndefined()
242
- expect(result.data).toEqual({
243
- data: {
244
- id: myEntryId,
245
- union: {
246
- __typename: 'EntryB',
247
- field2: field2Value,
248
- },
249
- },
250
- })
251
- expect(result.ref).toBe(commitHash)
252
- })
253
- })