Skip to content

Commit 776146a

Browse files
authored
Support GQL Vars for dynamic dmarc report api queries (canada-ca#1304)
* refactor to also support gql variables * update tests for changes
1 parent 107e616 commit 776146a

4 files changed

Lines changed: 396 additions & 146 deletions

File tree

api-js/src/loaders/dmarc-report/__tests__/generate-detail-table-fields.test.js

Lines changed: 195 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -3,148 +3,227 @@ const { generateDetailTableFields } = require('../..')
33
describe('given the generateDetailTableFields function', () => {
44
describe('given a successful generation', () => {
55
describe('pagination args are set', () => {
6-
describe('having first argument', () => {
7-
it('returns paginationArgs with first field set', () => {
8-
const subField = {
9-
arguments: [
10-
{
11-
name: {
12-
value: 'first',
13-
},
14-
value: {
15-
value: 5,
6+
describe('pagination args are written in', () => {
7+
describe('having first argument', () => {
8+
it('returns paginationArgs with first field set', () => {
9+
const subField = {
10+
arguments: [
11+
{
12+
name: {
13+
value: 'first',
14+
},
15+
value: {
16+
value: 5,
17+
},
1618
},
17-
},
18-
],
19-
}
19+
],
20+
}
2021

21-
const detailTableField = generateDetailTableFields({ subField })
22+
const detailTableField = generateDetailTableFields({ subField })
2223

23-
expect(detailTableField).toEqual({
24-
edgeSelection: '',
25-
pageInfoSelection: '',
26-
paginationArgs: 'first: 5',
24+
expect(detailTableField).toEqual({
25+
edgeSelection: '',
26+
pageInfoSelection: '',
27+
paginationArgs: 'first: 5',
28+
})
2729
})
2830
})
29-
})
30-
describe('having last argument ', () => {
31-
it('returns subfield gql string with last argument set', () => {
32-
const subField = {
33-
arguments: [
34-
{
35-
name: {
36-
value: 'last',
37-
},
38-
value: {
39-
value: 5,
31+
describe('having last argument ', () => {
32+
it('returns subfield gql string with last argument set', () => {
33+
const subField = {
34+
arguments: [
35+
{
36+
name: {
37+
value: 'last',
38+
},
39+
value: {
40+
value: 5,
41+
},
4042
},
41-
},
42-
],
43-
}
43+
],
44+
}
4445

45-
const detailTableField = generateDetailTableFields({ subField })
46+
const detailTableField = generateDetailTableFields({ subField })
4647

47-
expect(detailTableField).toEqual({
48-
edgeSelection: '',
49-
pageInfoSelection: '',
50-
paginationArgs: 'last: 5',
48+
expect(detailTableField).toEqual({
49+
edgeSelection: '',
50+
pageInfoSelection: '',
51+
paginationArgs: 'last: 5',
52+
})
5153
})
5254
})
53-
})
54-
describe('having before argument', () => {
55-
it('returns subfield gql string with before argument set', () => {
56-
const subField = {
57-
arguments: [
58-
{
59-
name: {
60-
value: 'before',
61-
},
62-
value: {
63-
value: 'SGVsbG8xMjM0',
55+
describe('having before argument', () => {
56+
it('returns subfield gql string with before argument set', () => {
57+
const subField = {
58+
arguments: [
59+
{
60+
name: {
61+
value: 'before',
62+
},
63+
value: {
64+
value: 'SGVsbG8xMjM0',
65+
},
6466
},
65-
},
66-
],
67-
}
67+
],
68+
}
6869

69-
const detailTableField = generateDetailTableFields({ subField })
70+
const detailTableField = generateDetailTableFields({ subField })
7071

71-
expect(detailTableField).toEqual({
72-
edgeSelection: '',
73-
pageInfoSelection: '',
74-
paginationArgs: 'before: "SGVsbG8xMjM0"',
72+
expect(detailTableField).toEqual({
73+
edgeSelection: '',
74+
pageInfoSelection: '',
75+
paginationArgs: 'before: "SGVsbG8xMjM0"',
76+
})
7577
})
7678
})
77-
})
78-
describe('having after argument', () => {
79-
it('returns subfield gql string with after argument set', () => {
80-
const subField = {
81-
arguments: [
82-
{
83-
name: {
84-
value: 'after',
85-
},
86-
value: {
87-
value: 'SGVsbG8xMjM0',
79+
describe('having after argument', () => {
80+
it('returns subfield gql string with after argument set', () => {
81+
const subField = {
82+
arguments: [
83+
{
84+
name: {
85+
value: 'after',
86+
},
87+
value: {
88+
value: 'SGVsbG8xMjM0',
89+
},
8890
},
89-
},
90-
],
91-
}
91+
],
92+
}
9293

93-
const detailTableField = generateDetailTableFields({ subField })
94+
const detailTableField = generateDetailTableFields({ subField })
9495

95-
expect(detailTableField).toEqual({
96-
edgeSelection: '',
97-
pageInfoSelection: '',
98-
paginationArgs: 'after: "SGVsbG8xMjM0"',
96+
expect(detailTableField).toEqual({
97+
edgeSelection: '',
98+
pageInfoSelection: '',
99+
paginationArgs: 'after: "SGVsbG8xMjM0"',
100+
})
99101
})
100102
})
101103
})
102-
describe('having all arguments set', () => {
103-
it('returns paginationArgs with all arguments set', () => {
104-
const subField = {
105-
arguments: [
106-
{
107-
name: {
108-
value: 'first',
109-
},
110-
value: {
111-
value: 5,
112-
},
113-
},
114-
{
115-
name: {
116-
value: 'last',
117-
},
118-
value: {
119-
value: 5,
120-
},
121-
},
122-
{
123-
name: {
124-
value: 'before',
125-
},
126-
value: {
127-
value: 'SGVsbG8xMjM0',
104+
describe('pagination args are set as variables', () => {
105+
describe('having first argument', () => {
106+
it('returns paginationArgs with first field set', () => {
107+
const subField = {
108+
arguments: [
109+
{
110+
name: {
111+
value: 'first',
112+
},
113+
value: {
114+
name: {
115+
value: 'first',
116+
},
117+
kind: 'Variable',
118+
},
128119
},
129-
},
130-
{
131-
name: {
132-
value: 'after',
120+
],
121+
}
122+
123+
const variables = {
124+
first: 5,
125+
}
126+
127+
const detailTableField = generateDetailTableFields({ subField, variables })
128+
129+
expect(detailTableField).toEqual({
130+
edgeSelection: '',
131+
pageInfoSelection: '',
132+
paginationArgs: 'first: 5',
133+
})
134+
})
135+
})
136+
describe('having last argument ', () => {
137+
it('returns subfield gql string with last argument set', () => {
138+
const subField = {
139+
arguments: [
140+
{
141+
name: {
142+
value: 'last',
143+
},
144+
value: {
145+
name: {
146+
value: 'last',
147+
},
148+
kind: 'Variable',
149+
},
133150
},
134-
value: {
135-
value: 'SGVsbG8xMjM0',
151+
],
152+
}
153+
154+
const variables = {
155+
last: 5,
156+
}
157+
158+
const detailTableField = generateDetailTableFields({ subField, variables })
159+
160+
expect(detailTableField).toEqual({
161+
edgeSelection: '',
162+
pageInfoSelection: '',
163+
paginationArgs: 'last: 5',
164+
})
165+
})
166+
})
167+
describe('having before argument', () => {
168+
it('returns subfield gql string with before argument set', () => {
169+
const subField = {
170+
arguments: [
171+
{
172+
name: {
173+
value: 'before',
174+
},
175+
value: {
176+
name: {
177+
value: 'before',
178+
},
179+
kind: 'Variable',
180+
},
136181
},
137-
},
138-
],
139-
}
182+
],
183+
}
140184

141-
const detailTableField = generateDetailTableFields({ subField })
185+
const variables = {
186+
before: 'SGVsbG8xMjM0',
187+
}
188+
189+
const detailTableField = generateDetailTableFields({ subField, variables })
190+
191+
expect(detailTableField).toEqual({
192+
edgeSelection: '',
193+
pageInfoSelection: '',
194+
paginationArgs: 'before: "SGVsbG8xMjM0"',
195+
})
196+
})
197+
})
198+
describe('having after argument', () => {
199+
it('returns subfield gql string with after argument set', () => {
200+
const subField = {
201+
arguments: [
202+
{
203+
name: {
204+
value: 'after',
205+
},
206+
value: {
207+
name: {
208+
value: 'after',
209+
},
210+
kind: 'Variable',
211+
},
212+
},
213+
],
214+
}
142215

143-
expect(detailTableField).toEqual({
144-
edgeSelection: '',
145-
pageInfoSelection: '',
146-
paginationArgs:
147-
'first: 5 last: 5 before: "SGVsbG8xMjM0" after: "SGVsbG8xMjM0"',
216+
const variables = {
217+
after: 'SGVsbG8xMjM0',
218+
}
219+
220+
const detailTableField = generateDetailTableFields({ subField, variables })
221+
222+
expect(detailTableField).toEqual({
223+
edgeSelection: '',
224+
pageInfoSelection: '',
225+
paginationArgs: 'after: "SGVsbG8xMjM0"',
226+
})
148227
})
149228
})
150229
})

0 commit comments

Comments
 (0)