|
1 |
| -import { parse, print } from 'graphql'; |
| 1 | +import { print } from 'graphql'; |
2 | 2 | import { parseSelectionSet } from '@graphql-tools/utils';
|
3 |
| -import { differenceSelectionSets } from '../src/diffSelectionSets'; |
4 | 3 | import { containsSelectionSet, selectionSetOfData } from '../src/selectionSet';
|
5 | 4 |
|
6 | 5 | it.each([
|
@@ -132,126 +131,3 @@ it('should create the correct selection set of data', () => {
|
132 | 131 | }"
|
133 | 132 | `);
|
134 | 133 | });
|
135 |
| - |
136 |
| -it.each([ |
137 |
| - // Basic field differences |
138 |
| - { |
139 |
| - required: '{ id, name, email }', |
140 |
| - available: '{ id, name }', |
141 |
| - missing: '{ email }', |
142 |
| - }, |
143 |
| - |
144 |
| - // No difference - identical sets |
145 |
| - { |
146 |
| - required: '{ id, name }', |
147 |
| - available: '{ id, name }', |
148 |
| - missing: null, |
149 |
| - }, |
150 |
| - |
151 |
| - // Nested field differences |
152 |
| - { |
153 |
| - required: '{ user { id, name, email }, posts }', |
154 |
| - available: '{ user { id, name } }', |
155 |
| - missing: '{ user { email }, posts }', |
156 |
| - }, |
157 |
| - |
158 |
| - // Field with alias differences |
159 |
| - { |
160 |
| - required: '{ id, userName: name, email }', |
161 |
| - available: '{ id, userName: name }', |
162 |
| - missing: '{ email }', |
163 |
| - }, |
164 |
| - |
165 |
| - // Deep nesting differences |
166 |
| - { |
167 |
| - required: '{ user { profile { avatar, bio, settings { theme } } } }', |
168 |
| - available: '{ user { profile { avatar, bio } } }', |
169 |
| - missing: '{ user { profile { settings { theme } } } }', |
170 |
| - }, |
171 |
| - |
172 |
| - // Inline fragment differences |
173 |
| - { |
174 |
| - required: '{ id, ... on User { name, email } }', |
175 |
| - available: '{ id, ... on User { name } }', |
176 |
| - missing: '{ ... on User { email } }', |
177 |
| - }, |
178 |
| - |
179 |
| - // Fragment spread differences |
180 |
| - { |
181 |
| - required: '{ id, ...UserFragment, ...PostFragment }', |
182 |
| - available: '{ id, ...UserFragment }', |
183 |
| - missing: '{ ...PostFragment }', |
184 |
| - }, |
185 |
| - |
186 |
| - // Mixed selection types |
187 |
| - { |
188 |
| - required: '{ id, name, ... on Admin { role } }', |
189 |
| - available: '{ id }', |
190 |
| - missing: '{ name, ... on Admin { role } }', |
191 |
| - }, |
192 |
| - |
193 |
| - // Different inline fragment type conditions |
194 |
| - { |
195 |
| - required: '{ id, ... on User { name }, ... on Admin { role } }', |
196 |
| - available: '{ id, ... on User { name } }', |
197 |
| - missing: '{ ... on Admin { role } }', |
198 |
| - }, |
199 |
| - |
200 |
| - // Complete subtraction - required is subset of available |
201 |
| - { |
202 |
| - required: '{ id, name }', |
203 |
| - available: '{ id, name, email, posts { title } }', |
204 |
| - missing: null, |
205 |
| - }, |
206 |
| - |
207 |
| - // Field exists in required with selectionSet, available without |
208 |
| - { |
209 |
| - required: '{ user { id, name } }', |
210 |
| - available: '{ user }', |
211 |
| - missing: '{ user { id, name } }', |
212 |
| - }, |
213 |
| - |
214 |
| - // Field exists in required without selectionSet, available with |
215 |
| - { |
216 |
| - required: '{ user }', |
217 |
| - available: '{ user { id, name } }', |
218 |
| - missing: null, |
219 |
| - }, |
220 |
| - |
221 |
| - // Complex nested with multiple levels |
222 |
| - { |
223 |
| - required: '{ user { posts { id, title, comments { author, text } }, profile { bio } } }', |
224 |
| - available: '{ user { posts { id, title }, profile { bio } } }', |
225 |
| - missing: '{ user { posts { comments { author, text } } } }', |
226 |
| - }, |
227 |
| - |
228 |
| - // Different fragment spreads |
229 |
| - { |
230 |
| - required: '{ ...FragmentA, ...FragmentB }', |
231 |
| - available: '{ ...FragmentA, ...FragmentC }', |
232 |
| - missing: '{ ...FragmentB }', |
233 |
| - }, |
234 |
| - |
235 |
| - // Empty available |
236 |
| - { |
237 |
| - required: '{ id, name, email }', |
238 |
| - available: null, |
239 |
| - missing: '{ id, name, email }', |
240 |
| - }, |
241 |
| -])( |
242 |
| - 'should calculate that $required - $available = $missing', |
243 |
| - ({ required, available, missing }) => { |
244 |
| - let diff = differenceSelectionSets( |
245 |
| - required ? parseSelectionSet(required) : null, |
246 |
| - available ? parseSelectionSet(available) : null, |
247 |
| - ); |
248 |
| - if (!missing) { |
249 |
| - expect(diff).toEqual(missing); |
250 |
| - } else { |
251 |
| - expect(print(diff)).toEqual( |
252 |
| - // print->parse stabilises the AST for comparison |
253 |
| - print(parse(missing)), |
254 |
| - ); |
255 |
| - } |
256 |
| - }, |
257 |
| -); |
0 commit comments