gqli 0.1.0

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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +31 -0
  5. data/.rubocop_todo.yml +44 -0
  6. data/.travis.yml +13 -0
  7. data/.yardopts +4 -0
  8. data/CHANGELOG.md +9 -0
  9. data/Gemfile +9 -0
  10. data/Gemfile.lock +154 -0
  11. data/Guardfile +24 -0
  12. data/LICENSE.txt +21 -0
  13. data/README.md +284 -0
  14. data/Rakefile +33 -0
  15. data/coverage/.last_run.json +5 -0
  16. data/coverage/.resultset.json +512 -0
  17. data/coverage/.resultset.json.lock +0 -0
  18. data/coverage/assets/0.10.2/application.css +799 -0
  19. data/coverage/assets/0.10.2/application.js +1707 -0
  20. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  21. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  22. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  23. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  24. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  25. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  26. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  27. data/coverage/assets/0.10.2/loading.gif +0 -0
  28. data/coverage/assets/0.10.2/magnify.png +0 -0
  29. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  30. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  31. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  32. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  33. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  34. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  35. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  36. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  37. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  38. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  39. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  40. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  41. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  42. data/coverage/index.html +3255 -0
  43. data/doc/GQLi/Base.html +628 -0
  44. data/doc/GQLi/Client.html +830 -0
  45. data/doc/GQLi/DSL.html +421 -0
  46. data/doc/GQLi/Fragment.html +405 -0
  47. data/doc/GQLi/Introspection.html +837 -0
  48. data/doc/GQLi/Node.html +413 -0
  49. data/doc/GQLi/Query.html +390 -0
  50. data/doc/GQLi/Response.html +370 -0
  51. data/doc/GQLi.html +157 -0
  52. data/doc/_index.html +236 -0
  53. data/doc/class_list.html +51 -0
  54. data/doc/css/common.css +1 -0
  55. data/doc/css/full_list.css +58 -0
  56. data/doc/css/style.css +496 -0
  57. data/doc/file.CHANGELOG.html +76 -0
  58. data/doc/file.LICENSE.html +70 -0
  59. data/doc/file.README.html +365 -0
  60. data/doc/file_list.html +66 -0
  61. data/doc/frames.html +17 -0
  62. data/doc/index.html +365 -0
  63. data/doc/js/app.js +292 -0
  64. data/doc/js/full_list.js +216 -0
  65. data/doc/js/jquery.js +4 -0
  66. data/doc/method_list.html +355 -0
  67. data/doc/top-level-namespace.html +110 -0
  68. data/gqli.gemspec +37 -0
  69. data/lib/gqli/base.rb +53 -0
  70. data/lib/gqli/client.rb +59 -0
  71. data/lib/gqli/dsl.rb +37 -0
  72. data/lib/gqli/fragment.rb +25 -0
  73. data/lib/gqli/introspection.rb +215 -0
  74. data/lib/gqli/node.rb +48 -0
  75. data/lib/gqli/query.rb +29 -0
  76. data/lib/gqli/response.rb +15 -0
  77. data/lib/gqli/version.rb +7 -0
  78. data/lib/gqli.rb +6 -0
  79. data/spec/fixtures/vcr_cassettes/catCollection.yml +63 -0
  80. data/spec/fixtures/vcr_cassettes/client.yml +171 -0
  81. data/spec/fixtures/vcr_cassettes/validation_error.yml +62 -0
  82. data/spec/lib/gqli/client_spec.rb +90 -0
  83. data/spec/lib/gqli/dsl_spec.rb +205 -0
  84. data/spec/lib/gqli/introspection_spec.rb +125 -0
  85. data/spec/spec_helper.rb +25 -0
  86. data/usage.rb +100 -0
  87. data/usage_introspection.rb +63 -0
  88. data/usage_with_inlined_dsl.rb +69 -0
  89. metadata +387 -0
@@ -0,0 +1,3255 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Gqli</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.10.2/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.10.2/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.10.2/favicon_green.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.10.2/favicon.png" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="loading">
14
+ <img src="./assets/0.10.2/loading.gif" alt="loading"/>
15
+ </div>
16
+ <div id="wrapper" style="display:none;">
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2018-10-15T13:10:45+02:00">2018-10-15T13:10:45+02:00</abbr></div>
18
+ <ul class="group_tabs"></ul>
19
+
20
+ <div id="content">
21
+ <div class="file_list_container" id="AllFiles">
22
+ <h2>
23
+ <span class="group_name">All Files</span>
24
+ (<span class="covered_percent"><span class="green">94.02%</span></span>
25
+ covered at
26
+ <span class="covered_strength">
27
+ <span class="green">
28
+ 33.66
29
+ </span>
30
+ </span> hits/line)
31
+ </h2>
32
+ <a name="AllFiles"></a>
33
+ <div>
34
+ <b>9</b> files in total.
35
+ <b>251</b> relevant lines.
36
+ <span class="green"><b>236</b> lines covered</span> and
37
+ <span class="red"><b>15</b> lines missed </span>
38
+ </div>
39
+ <table class="file_list">
40
+ <thead>
41
+ <tr>
42
+ <th>File</th>
43
+ <th>% covered</th>
44
+ <th>Lines</th>
45
+ <th>Relevant Lines</th>
46
+ <th>Lines covered</th>
47
+ <th>Lines missed</th>
48
+ <th>Avg. Hits / Line</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+
53
+ <tr>
54
+ <td class="strong"><a href="#c4c0ccce18d53f019a15391e06762c3a041e5bae" class="src_link" title="lib/gqli.rb">lib/gqli.rb</a></td>
55
+ <td class="green strong">100.0 %</td>
56
+ <td>6</td>
57
+ <td>4</td>
58
+ <td>4</td>
59
+ <td>0</td>
60
+ <td>1.0</td>
61
+ </tr>
62
+
63
+ <tr>
64
+ <td class="strong"><a href="#a60af6e9955575ceef3cab9bd3242b9048fa6845" class="src_link" title="lib/gqli/base.rb">lib/gqli/base.rb</a></td>
65
+ <td class="green strong">100.0 %</td>
66
+ <td>53</td>
67
+ <td>27</td>
68
+ <td>27</td>
69
+ <td>0</td>
70
+ <td>85.3</td>
71
+ </tr>
72
+
73
+ <tr>
74
+ <td class="strong"><a href="#68dcd39c86205e255ffb6dcb92fa9f24c6f7d923" class="src_link" title="lib/gqli/client.rb">lib/gqli/client.rb</a></td>
75
+ <td class="yellow strong">85.71 %</td>
76
+ <td>59</td>
77
+ <td>28</td>
78
+ <td>24</td>
79
+ <td>4</td>
80
+ <td>3.4</td>
81
+ </tr>
82
+
83
+ <tr>
84
+ <td class="strong"><a href="#9abd05ccff4ad7a4f5b1bb75901af6e008bc9c5d" class="src_link" title="lib/gqli/dsl.rb">lib/gqli/dsl.rb</a></td>
85
+ <td class="green strong">91.67 %</td>
86
+ <td>37</td>
87
+ <td>12</td>
88
+ <td>11</td>
89
+ <td>1</td>
90
+ <td>1.6</td>
91
+ </tr>
92
+
93
+ <tr>
94
+ <td class="strong"><a href="#049f7e831814eec17f9b96573767e0e1613dd427" class="src_link" title="lib/gqli/fragment.rb">lib/gqli/fragment.rb</a></td>
95
+ <td class="yellow strong">90.0 %</td>
96
+ <td>25</td>
97
+ <td>10</td>
98
+ <td>9</td>
99
+ <td>1</td>
100
+ <td>1.3</td>
101
+ </tr>
102
+
103
+ <tr>
104
+ <td class="strong"><a href="#07f15b56d18102110d4b398de85375295500eab7" class="src_link" title="lib/gqli/introspection.rb">lib/gqli/introspection.rb</a></td>
105
+ <td class="green strong">96.88 %</td>
106
+ <td>215</td>
107
+ <td>128</td>
108
+ <td>124</td>
109
+ <td>4</td>
110
+ <td>7.7</td>
111
+ </tr>
112
+
113
+ <tr>
114
+ <td class="strong"><a href="#827311add0f30734381233709eff6f2feef29107" class="src_link" title="lib/gqli/node.rb">lib/gqli/node.rb</a></td>
115
+ <td class="yellow strong">88.0 %</td>
116
+ <td>48</td>
117
+ <td>25</td>
118
+ <td>22</td>
119
+ <td>3</td>
120
+ <td>199.4</td>
121
+ </tr>
122
+
123
+ <tr>
124
+ <td class="strong"><a href="#add3b96d53406d04d830c517b925e60e5592500d" class="src_link" title="lib/gqli/query.rb">lib/gqli/query.rb</a></td>
125
+ <td class="red strong">80.0 %</td>
126
+ <td>29</td>
127
+ <td>10</td>
128
+ <td>8</td>
129
+ <td>2</td>
130
+ <td>2.2</td>
131
+ </tr>
132
+
133
+ <tr>
134
+ <td class="strong"><a href="#fc631e4d066aa11a78ad288ef5341c2bc5e2fd9d" class="src_link" title="lib/gqli/response.rb">lib/gqli/response.rb</a></td>
135
+ <td class="green strong">100.0 %</td>
136
+ <td>15</td>
137
+ <td>7</td>
138
+ <td>7</td>
139
+ <td>0</td>
140
+ <td>3.0</td>
141
+ </tr>
142
+
143
+ </tbody>
144
+ </table>
145
+ </div>
146
+
147
+
148
+
149
+ </div>
150
+
151
+ <div id="footer">
152
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.16.1
153
+ and simplecov-html v0.10.2<br/>
154
+ using RSpec
155
+ </div>
156
+
157
+ <div class="source_files">
158
+
159
+ <div class="source_table" id="c4c0ccce18d53f019a15391e06762c3a041e5bae">
160
+ <div class="header">
161
+ <h3>lib/gqli.rb</h3>
162
+ <h4><span class="green">100.0 %</span> covered</h4>
163
+ <div>
164
+ <b>4</b> relevant lines.
165
+ <span class="green"><b>4</b> lines covered</span> and
166
+ <span class="red"><b>0</b> lines missed.</span>
167
+ </div>
168
+ </div>
169
+
170
+ <pre>
171
+ <ol>
172
+
173
+ <li class="never" data-hits="" data-linenumber="1">
174
+
175
+
176
+ <code class="ruby"># frozen_string_literal: true</code>
177
+ </li>
178
+
179
+ <li class="never" data-hits="" data-linenumber="2">
180
+
181
+
182
+ <code class="ruby"></code>
183
+ </li>
184
+
185
+ <li class="covered" data-hits="1" data-linenumber="3">
186
+ <span class="hits">1</span>
187
+
188
+ <code class="ruby">require_relative &#39;./gqli/dsl&#39;</code>
189
+ </li>
190
+
191
+ <li class="covered" data-hits="1" data-linenumber="4">
192
+ <span class="hits">1</span>
193
+
194
+ <code class="ruby">require_relative &#39;./gqli/client&#39;</code>
195
+ </li>
196
+
197
+ <li class="covered" data-hits="1" data-linenumber="5">
198
+ <span class="hits">1</span>
199
+
200
+ <code class="ruby">require_relative &#39;./gqli/introspection&#39;</code>
201
+ </li>
202
+
203
+ <li class="covered" data-hits="1" data-linenumber="6">
204
+ <span class="hits">1</span>
205
+
206
+ <code class="ruby">require_relative &#39;./gqli/version&#39;</code>
207
+ </li>
208
+
209
+ </ol>
210
+ </pre>
211
+ </div>
212
+
213
+
214
+ <div class="source_table" id="a60af6e9955575ceef3cab9bd3242b9048fa6845">
215
+ <div class="header">
216
+ <h3>lib/gqli/base.rb</h3>
217
+ <h4><span class="green">100.0 %</span> covered</h4>
218
+ <div>
219
+ <b>27</b> relevant lines.
220
+ <span class="green"><b>27</b> lines covered</span> and
221
+ <span class="red"><b>0</b> lines missed.</span>
222
+ </div>
223
+ </div>
224
+
225
+ <pre>
226
+ <ol>
227
+
228
+ <li class="never" data-hits="" data-linenumber="1">
229
+
230
+
231
+ <code class="ruby"># frozen_string_literal: true</code>
232
+ </li>
233
+
234
+ <li class="never" data-hits="" data-linenumber="2">
235
+
236
+
237
+ <code class="ruby"></code>
238
+ </li>
239
+
240
+ <li class="covered" data-hits="1" data-linenumber="3">
241
+ <span class="hits">1</span>
242
+
243
+ <code class="ruby">module GQLi</code>
244
+ </li>
245
+
246
+ <li class="never" data-hits="" data-linenumber="4">
247
+
248
+
249
+ <code class="ruby"> # Base class for GraphQL type wrappers</code>
250
+ </li>
251
+
252
+ <li class="covered" data-hits="1" data-linenumber="5">
253
+ <span class="hits">1</span>
254
+
255
+ <code class="ruby"> class Base</code>
256
+ </li>
257
+
258
+ <li class="covered" data-hits="1" data-linenumber="6">
259
+ <span class="hits">1</span>
260
+
261
+ <code class="ruby"> attr_reader :__name, :__depth, :__nodes</code>
262
+ </li>
263
+
264
+ <li class="never" data-hits="" data-linenumber="7">
265
+
266
+
267
+ <code class="ruby"></code>
268
+ </li>
269
+
270
+ <li class="covered" data-hits="1" data-linenumber="8">
271
+ <span class="hits">1</span>
272
+
273
+ <code class="ruby"> def initialize(name = nil, depth = 0, &amp;block)</code>
274
+ </li>
275
+
276
+ <li class="covered" data-hits="255" data-linenumber="9">
277
+ <span class="hits">255</span>
278
+
279
+ <code class="ruby"> @__name = name</code>
280
+ </li>
281
+
282
+ <li class="covered" data-hits="255" data-linenumber="10">
283
+ <span class="hits">255</span>
284
+
285
+ <code class="ruby"> @__depth = depth</code>
286
+ </li>
287
+
288
+ <li class="covered" data-hits="255" data-linenumber="11">
289
+ <span class="hits">255</span>
290
+
291
+ <code class="ruby"> @__nodes = []</code>
292
+ </li>
293
+
294
+ <li class="covered" data-hits="255" data-linenumber="12">
295
+ <span class="hits">255</span>
296
+
297
+ <code class="ruby"> instance_eval(&amp;block) unless block.nil?</code>
298
+ </li>
299
+
300
+ <li class="never" data-hits="" data-linenumber="13">
301
+
302
+
303
+ <code class="ruby"> end</code>
304
+ </li>
305
+
306
+ <li class="never" data-hits="" data-linenumber="14">
307
+
308
+
309
+ <code class="ruby"></code>
310
+ </li>
311
+
312
+ <li class="never" data-hits="" data-linenumber="15">
313
+
314
+
315
+ <code class="ruby"> # Inlines fragment nodes into current node</code>
316
+ </li>
317
+
318
+ <li class="covered" data-hits="1" data-linenumber="16">
319
+ <span class="hits">1</span>
320
+
321
+ <code class="ruby"> def ___(fragment)</code>
322
+ </li>
323
+
324
+ <li class="covered" data-hits="8" data-linenumber="17">
325
+ <span class="hits">8</span>
326
+
327
+ <code class="ruby"> @__nodes += __clone_nodes(fragment)</code>
328
+ </li>
329
+
330
+ <li class="never" data-hits="" data-linenumber="18">
331
+
332
+
333
+ <code class="ruby"> end</code>
334
+ </li>
335
+
336
+ <li class="never" data-hits="" data-linenumber="19">
337
+
338
+
339
+ <code class="ruby"></code>
340
+ </li>
341
+
342
+ <li class="never" data-hits="" data-linenumber="20">
343
+
344
+
345
+ <code class="ruby"> # Adds type match node</code>
346
+ </li>
347
+
348
+ <li class="covered" data-hits="1" data-linenumber="21">
349
+ <span class="hits">1</span>
350
+
351
+ <code class="ruby"> def __on(type_name, &amp;block)</code>
352
+ </li>
353
+
354
+ <li class="covered" data-hits="2" data-linenumber="22">
355
+ <span class="hits">2</span>
356
+
357
+ <code class="ruby"> require_relative &#39;./node&#39;</code>
358
+ </li>
359
+
360
+ <li class="covered" data-hits="2" data-linenumber="23">
361
+ <span class="hits">2</span>
362
+
363
+ <code class="ruby"> @__nodes &lt;&lt; Node.new(&quot;... on #{type_name}&quot;, [], __depth + 1, &amp;block)</code>
364
+ </li>
365
+
366
+ <li class="never" data-hits="" data-linenumber="24">
367
+
368
+
369
+ <code class="ruby"> end</code>
370
+ </li>
371
+
372
+ <li class="never" data-hits="" data-linenumber="25">
373
+
374
+
375
+ <code class="ruby"></code>
376
+ </li>
377
+
378
+ <li class="covered" data-hits="1" data-linenumber="26">
379
+ <span class="hits">1</span>
380
+
381
+ <code class="ruby"> protected</code>
382
+ </li>
383
+
384
+ <li class="never" data-hits="" data-linenumber="27">
385
+
386
+
387
+ <code class="ruby"></code>
388
+ </li>
389
+
390
+ <li class="covered" data-hits="1" data-linenumber="28">
391
+ <span class="hits">1</span>
392
+
393
+ <code class="ruby"> def __clone_nodes(node_container)</code>
394
+ </li>
395
+
396
+ <li class="covered" data-hits="178" data-linenumber="29">
397
+ <span class="hits">178</span>
398
+
399
+ <code class="ruby"> require_relative &#39;./node&#39;</code>
400
+ </li>
401
+
402
+ <li class="covered" data-hits="178" data-linenumber="30">
403
+ <span class="hits">178</span>
404
+
405
+ <code class="ruby"> __clone(node_container.__nodes).map do |n|</code>
406
+ </li>
407
+
408
+ <li class="covered" data-hits="170" data-linenumber="31">
409
+ <span class="hits">170</span>
410
+
411
+ <code class="ruby"> node = Node.new(n.__name, n.__params, __depth + 1)</code>
412
+ </li>
413
+
414
+ <li class="covered" data-hits="170" data-linenumber="32">
415
+ <span class="hits">170</span>
416
+
417
+ <code class="ruby"> node.instance_variable_set(</code>
418
+ </li>
419
+
420
+ <li class="never" data-hits="" data-linenumber="33">
421
+
422
+
423
+ <code class="ruby"> :@__nodes,</code>
424
+ </li>
425
+
426
+ <li class="never" data-hits="" data-linenumber="34">
427
+
428
+
429
+ <code class="ruby"> node.send(:__clone_nodes, n)</code>
430
+ </li>
431
+
432
+ <li class="never" data-hits="" data-linenumber="35">
433
+
434
+
435
+ <code class="ruby"> )</code>
436
+ </li>
437
+
438
+ <li class="covered" data-hits="170" data-linenumber="36">
439
+ <span class="hits">170</span>
440
+
441
+ <code class="ruby"> node</code>
442
+ </li>
443
+
444
+ <li class="never" data-hits="" data-linenumber="37">
445
+
446
+
447
+ <code class="ruby"> end</code>
448
+ </li>
449
+
450
+ <li class="never" data-hits="" data-linenumber="38">
451
+
452
+
453
+ <code class="ruby"> end</code>
454
+ </li>
455
+
456
+ <li class="never" data-hits="" data-linenumber="39">
457
+
458
+
459
+ <code class="ruby"></code>
460
+ </li>
461
+
462
+ <li class="covered" data-hits="1" data-linenumber="40">
463
+ <span class="hits">1</span>
464
+
465
+ <code class="ruby"> def __clone(obj)</code>
466
+ </li>
467
+
468
+ <li class="covered" data-hits="178" data-linenumber="41">
469
+ <span class="hits">178</span>
470
+
471
+ <code class="ruby"> Marshal.load(Marshal.dump(obj))</code>
472
+ </li>
473
+
474
+ <li class="never" data-hits="" data-linenumber="42">
475
+
476
+
477
+ <code class="ruby"> end</code>
478
+ </li>
479
+
480
+ <li class="never" data-hits="" data-linenumber="43">
481
+
482
+
483
+ <code class="ruby"></code>
484
+ </li>
485
+
486
+ <li class="covered" data-hits="1" data-linenumber="44">
487
+ <span class="hits">1</span>
488
+
489
+ <code class="ruby"> def __params_from_args(args)</code>
490
+ </li>
491
+
492
+ <li class="covered" data-hits="72" data-linenumber="45">
493
+ <span class="hits">72</span>
494
+
495
+ <code class="ruby"> args.empty? ? {} : args[0]</code>
496
+ </li>
497
+
498
+ <li class="never" data-hits="" data-linenumber="46">
499
+
500
+
501
+ <code class="ruby"> end</code>
502
+ </li>
503
+
504
+ <li class="never" data-hits="" data-linenumber="47">
505
+
506
+
507
+ <code class="ruby"></code>
508
+ </li>
509
+
510
+ <li class="covered" data-hits="1" data-linenumber="48">
511
+ <span class="hits">1</span>
512
+
513
+ <code class="ruby"> def method_missing(name, *args, &amp;block)</code>
514
+ </li>
515
+
516
+ <li class="covered" data-hits="72" data-linenumber="49">
517
+ <span class="hits">72</span>
518
+
519
+ <code class="ruby"> require_relative &#39;./node&#39;</code>
520
+ </li>
521
+
522
+ <li class="covered" data-hits="72" data-linenumber="50">
523
+ <span class="hits">72</span>
524
+
525
+ <code class="ruby"> @__nodes &lt;&lt; Node.new(name.to_s, __params_from_args(args), __depth + 1, &amp;block)</code>
526
+ </li>
527
+
528
+ <li class="never" data-hits="" data-linenumber="51">
529
+
530
+
531
+ <code class="ruby"> end</code>
532
+ </li>
533
+
534
+ <li class="never" data-hits="" data-linenumber="52">
535
+
536
+
537
+ <code class="ruby"> end</code>
538
+ </li>
539
+
540
+ <li class="never" data-hits="" data-linenumber="53">
541
+
542
+
543
+ <code class="ruby">end</code>
544
+ </li>
545
+
546
+ </ol>
547
+ </pre>
548
+ </div>
549
+
550
+
551
+ <div class="source_table" id="68dcd39c86205e255ffb6dcb92fa9f24c6f7d923">
552
+ <div class="header">
553
+ <h3>lib/gqli/client.rb</h3>
554
+ <h4><span class="yellow">85.71 %</span> covered</h4>
555
+ <div>
556
+ <b>28</b> relevant lines.
557
+ <span class="green"><b>24</b> lines covered</span> and
558
+ <span class="red"><b>4</b> lines missed.</span>
559
+ </div>
560
+ </div>
561
+
562
+ <pre>
563
+ <ol>
564
+
565
+ <li class="never" data-hits="" data-linenumber="1">
566
+
567
+
568
+ <code class="ruby"># frozen_string_literal: true</code>
569
+ </li>
570
+
571
+ <li class="never" data-hits="" data-linenumber="2">
572
+
573
+
574
+ <code class="ruby"></code>
575
+ </li>
576
+
577
+ <li class="covered" data-hits="1" data-linenumber="3">
578
+ <span class="hits">1</span>
579
+
580
+ <code class="ruby">require &#39;http&#39;</code>
581
+ </li>
582
+
583
+ <li class="covered" data-hits="1" data-linenumber="4">
584
+ <span class="hits">1</span>
585
+
586
+ <code class="ruby">require &#39;json&#39;</code>
587
+ </li>
588
+
589
+ <li class="covered" data-hits="1" data-linenumber="5">
590
+ <span class="hits">1</span>
591
+
592
+ <code class="ruby">require_relative &#39;./response&#39;</code>
593
+ </li>
594
+
595
+ <li class="covered" data-hits="1" data-linenumber="6">
596
+ <span class="hits">1</span>
597
+
598
+ <code class="ruby">require_relative &#39;./introspection&#39;</code>
599
+ </li>
600
+
601
+ <li class="covered" data-hits="1" data-linenumber="7">
602
+ <span class="hits">1</span>
603
+
604
+ <code class="ruby">require_relative &#39;./version&#39;</code>
605
+ </li>
606
+
607
+ <li class="never" data-hits="" data-linenumber="8">
608
+
609
+
610
+ <code class="ruby"></code>
611
+ </li>
612
+
613
+ <li class="covered" data-hits="1" data-linenumber="9">
614
+ <span class="hits">1</span>
615
+
616
+ <code class="ruby">module GQLi</code>
617
+ </li>
618
+
619
+ <li class="never" data-hits="" data-linenumber="10">
620
+
621
+
622
+ <code class="ruby"> # GraphQL HTTP Client</code>
623
+ </li>
624
+
625
+ <li class="covered" data-hits="1" data-linenumber="11">
626
+ <span class="hits">1</span>
627
+
628
+ <code class="ruby"> class Client</code>
629
+ </li>
630
+
631
+ <li class="covered" data-hits="1" data-linenumber="12">
632
+ <span class="hits">1</span>
633
+
634
+ <code class="ruby"> attr_reader :url, :params, :headers, :validate_query, :schema</code>
635
+ </li>
636
+
637
+ <li class="never" data-hits="" data-linenumber="13">
638
+
639
+
640
+ <code class="ruby"></code>
641
+ </li>
642
+
643
+ <li class="covered" data-hits="1" data-linenumber="14">
644
+ <span class="hits">1</span>
645
+
646
+ <code class="ruby"> def initialize(url, params: {}, headers: {}, validate_query: true)</code>
647
+ </li>
648
+
649
+ <li class="covered" data-hits="8" data-linenumber="15">
650
+ <span class="hits">8</span>
651
+
652
+ <code class="ruby"> @url = url</code>
653
+ </li>
654
+
655
+ <li class="covered" data-hits="8" data-linenumber="16">
656
+ <span class="hits">8</span>
657
+
658
+ <code class="ruby"> @params = params</code>
659
+ </li>
660
+
661
+ <li class="covered" data-hits="8" data-linenumber="17">
662
+ <span class="hits">8</span>
663
+
664
+ <code class="ruby"> @headers = headers</code>
665
+ </li>
666
+
667
+ <li class="covered" data-hits="8" data-linenumber="18">
668
+ <span class="hits">8</span>
669
+
670
+ <code class="ruby"> @validate_query = validate_query</code>
671
+ </li>
672
+
673
+ <li class="never" data-hits="" data-linenumber="19">
674
+
675
+
676
+ <code class="ruby"></code>
677
+ </li>
678
+
679
+ <li class="covered" data-hits="8" data-linenumber="20">
680
+ <span class="hits">8</span>
681
+
682
+ <code class="ruby"> @schema = Introspection.new(self) if validate_query</code>
683
+ </li>
684
+
685
+ <li class="never" data-hits="" data-linenumber="21">
686
+
687
+
688
+ <code class="ruby"> end</code>
689
+ </li>
690
+
691
+ <li class="never" data-hits="" data-linenumber="22">
692
+
693
+
694
+ <code class="ruby"></code>
695
+ </li>
696
+
697
+ <li class="never" data-hits="" data-linenumber="23">
698
+
699
+
700
+ <code class="ruby"> # Executes a query</code>
701
+ </li>
702
+
703
+ <li class="never" data-hits="" data-linenumber="24">
704
+
705
+
706
+ <code class="ruby"> # If validations are enabled, will perform validation check before request.</code>
707
+ </li>
708
+
709
+ <li class="covered" data-hits="1" data-linenumber="25">
710
+ <span class="hits">1</span>
711
+
712
+ <code class="ruby"> def execute(query)</code>
713
+ </li>
714
+
715
+ <li class="missed" data-hits="0" data-linenumber="26">
716
+
717
+
718
+ <code class="ruby"> fail &#39;Validation Error: query is invalid - HTTP Request not sent&#39; unless valid?(query)</code>
719
+ </li>
720
+
721
+ <li class="never" data-hits="" data-linenumber="27">
722
+
723
+
724
+ <code class="ruby"></code>
725
+ </li>
726
+
727
+ <li class="missed" data-hits="0" data-linenumber="28">
728
+
729
+
730
+ <code class="ruby"> execute!(query)</code>
731
+ </li>
732
+
733
+ <li class="never" data-hits="" data-linenumber="29">
734
+
735
+
736
+ <code class="ruby"> end</code>
737
+ </li>
738
+
739
+ <li class="never" data-hits="" data-linenumber="30">
740
+
741
+
742
+ <code class="ruby"></code>
743
+ </li>
744
+
745
+ <li class="never" data-hits="" data-linenumber="31">
746
+
747
+
748
+ <code class="ruby"> # Executres a query</code>
749
+ </li>
750
+
751
+ <li class="never" data-hits="" data-linenumber="32">
752
+
753
+
754
+ <code class="ruby"> # Ignores validations</code>
755
+ </li>
756
+
757
+ <li class="covered" data-hits="1" data-linenumber="33">
758
+ <span class="hits">1</span>
759
+
760
+ <code class="ruby"> def execute!(query)</code>
761
+ </li>
762
+
763
+ <li class="covered" data-hits="8" data-linenumber="34">
764
+ <span class="hits">8</span>
765
+
766
+ <code class="ruby"> http_response = HTTP.headers(request_headers).post(@url, params: @params, json: { query: query.to_gql })</code>
767
+ </li>
768
+
769
+ <li class="never" data-hits="" data-linenumber="35">
770
+
771
+
772
+ <code class="ruby"></code>
773
+ </li>
774
+
775
+ <li class="covered" data-hits="8" data-linenumber="36">
776
+ <span class="hits">8</span>
777
+
778
+ <code class="ruby"> fail &quot;Error: #{http_response.reason}\nBody: #{http_response.body}&quot; if http_response.status &gt;= 300</code>
779
+ </li>
780
+
781
+ <li class="never" data-hits="" data-linenumber="37">
782
+
783
+
784
+ <code class="ruby"></code>
785
+ </li>
786
+
787
+ <li class="covered" data-hits="8" data-linenumber="38">
788
+ <span class="hits">8</span>
789
+
790
+ <code class="ruby"> data = JSON.parse(http_response.to_s)[&#39;data&#39;]</code>
791
+ </li>
792
+
793
+ <li class="never" data-hits="" data-linenumber="39">
794
+
795
+
796
+ <code class="ruby"></code>
797
+ </li>
798
+
799
+ <li class="covered" data-hits="8" data-linenumber="40">
800
+ <span class="hits">8</span>
801
+
802
+ <code class="ruby"> Response.new(data, query)</code>
803
+ </li>
804
+
805
+ <li class="never" data-hits="" data-linenumber="41">
806
+
807
+
808
+ <code class="ruby"> end</code>
809
+ </li>
810
+
811
+ <li class="never" data-hits="" data-linenumber="42">
812
+
813
+
814
+ <code class="ruby"></code>
815
+ </li>
816
+
817
+ <li class="never" data-hits="" data-linenumber="43">
818
+
819
+
820
+ <code class="ruby"> # Validates a query against the schema</code>
821
+ </li>
822
+
823
+ <li class="covered" data-hits="1" data-linenumber="44">
824
+ <span class="hits">1</span>
825
+
826
+ <code class="ruby"> def valid?(query)</code>
827
+ </li>
828
+
829
+ <li class="missed" data-hits="0" data-linenumber="45">
830
+
831
+
832
+ <code class="ruby"> return true unless validate_query</code>
833
+ </li>
834
+
835
+ <li class="never" data-hits="" data-linenumber="46">
836
+
837
+
838
+ <code class="ruby"></code>
839
+ </li>
840
+
841
+ <li class="missed" data-hits="0" data-linenumber="47">
842
+
843
+
844
+ <code class="ruby"> @schema.valid?(query)</code>
845
+ </li>
846
+
847
+ <li class="never" data-hits="" data-linenumber="48">
848
+
849
+
850
+ <code class="ruby"> end</code>
851
+ </li>
852
+
853
+ <li class="never" data-hits="" data-linenumber="49">
854
+
855
+
856
+ <code class="ruby"></code>
857
+ </li>
858
+
859
+ <li class="covered" data-hits="1" data-linenumber="50">
860
+ <span class="hits">1</span>
861
+
862
+ <code class="ruby"> protected</code>
863
+ </li>
864
+
865
+ <li class="never" data-hits="" data-linenumber="51">
866
+
867
+
868
+ <code class="ruby"></code>
869
+ </li>
870
+
871
+ <li class="covered" data-hits="1" data-linenumber="52">
872
+ <span class="hits">1</span>
873
+
874
+ <code class="ruby"> def request_headers</code>
875
+ </li>
876
+
877
+ <li class="never" data-hits="" data-linenumber="53">
878
+
879
+
880
+ <code class="ruby"> {</code>
881
+ </li>
882
+
883
+ <li class="never" data-hits="" data-linenumber="54">
884
+
885
+
886
+ <code class="ruby"> accept: &#39;application/json&#39;,</code>
887
+ </li>
888
+
889
+ <li class="never" data-hits="" data-linenumber="55">
890
+
891
+
892
+ <code class="ruby"> user_agent: &quot;gqli.rb/#{VERSION}; http.rb/#{HTTP::VERSION}&quot;</code>
893
+ </li>
894
+
895
+ <li class="covered" data-hits="8" data-linenumber="56">
896
+ <span class="hits">8</span>
897
+
898
+ <code class="ruby"> }.merge(@headers)</code>
899
+ </li>
900
+
901
+ <li class="never" data-hits="" data-linenumber="57">
902
+
903
+
904
+ <code class="ruby"> end</code>
905
+ </li>
906
+
907
+ <li class="never" data-hits="" data-linenumber="58">
908
+
909
+
910
+ <code class="ruby"> end</code>
911
+ </li>
912
+
913
+ <li class="never" data-hits="" data-linenumber="59">
914
+
915
+
916
+ <code class="ruby">end</code>
917
+ </li>
918
+
919
+ </ol>
920
+ </pre>
921
+ </div>
922
+
923
+
924
+ <div class="source_table" id="9abd05ccff4ad7a4f5b1bb75901af6e008bc9c5d">
925
+ <div class="header">
926
+ <h3>lib/gqli/dsl.rb</h3>
927
+ <h4><span class="green">91.67 %</span> covered</h4>
928
+ <div>
929
+ <b>12</b> relevant lines.
930
+ <span class="green"><b>11</b> lines covered</span> and
931
+ <span class="red"><b>1</b> lines missed.</span>
932
+ </div>
933
+ </div>
934
+
935
+ <pre>
936
+ <ol>
937
+
938
+ <li class="never" data-hits="" data-linenumber="1">
939
+
940
+
941
+ <code class="ruby"># frozen_string_literal: true</code>
942
+ </li>
943
+
944
+ <li class="never" data-hits="" data-linenumber="2">
945
+
946
+
947
+ <code class="ruby"></code>
948
+ </li>
949
+
950
+ <li class="covered" data-hits="1" data-linenumber="3">
951
+ <span class="hits">1</span>
952
+
953
+ <code class="ruby">require_relative &#39;./query&#39;</code>
954
+ </li>
955
+
956
+ <li class="covered" data-hits="1" data-linenumber="4">
957
+ <span class="hits">1</span>
958
+
959
+ <code class="ruby">require_relative &#39;./fragment&#39;</code>
960
+ </li>
961
+
962
+ <li class="never" data-hits="" data-linenumber="5">
963
+
964
+
965
+ <code class="ruby"></code>
966
+ </li>
967
+
968
+ <li class="covered" data-hits="1" data-linenumber="6">
969
+ <span class="hits">1</span>
970
+
971
+ <code class="ruby">module GQLi</code>
972
+ </li>
973
+
974
+ <li class="never" data-hits="" data-linenumber="7">
975
+
976
+
977
+ <code class="ruby"> # GraphQL-like DSL methods</code>
978
+ </li>
979
+
980
+ <li class="covered" data-hits="1" data-linenumber="8">
981
+ <span class="hits">1</span>
982
+
983
+ <code class="ruby"> module DSL</code>
984
+ </li>
985
+
986
+ <li class="never" data-hits="" data-linenumber="9">
987
+
988
+
989
+ <code class="ruby"> # Creates a Query object</code>
990
+ </li>
991
+
992
+ <li class="never" data-hits="" data-linenumber="10">
993
+
994
+
995
+ <code class="ruby"> #</code>
996
+ </li>
997
+
998
+ <li class="never" data-hits="" data-linenumber="11">
999
+
1000
+
1001
+ <code class="ruby"> # Can be used at a class level</code>
1002
+ </li>
1003
+
1004
+ <li class="covered" data-hits="1" data-linenumber="12">
1005
+ <span class="hits">1</span>
1006
+
1007
+ <code class="ruby"> def self.query(name = nil, &amp;block)</code>
1008
+ </li>
1009
+
1010
+ <li class="covered" data-hits="7" data-linenumber="13">
1011
+ <span class="hits">7</span>
1012
+
1013
+ <code class="ruby"> Query.new(name, &amp;block)</code>
1014
+ </li>
1015
+
1016
+ <li class="never" data-hits="" data-linenumber="14">
1017
+
1018
+
1019
+ <code class="ruby"> end</code>
1020
+ </li>
1021
+
1022
+ <li class="never" data-hits="" data-linenumber="15">
1023
+
1024
+
1025
+ <code class="ruby"></code>
1026
+ </li>
1027
+
1028
+ <li class="never" data-hits="" data-linenumber="16">
1029
+
1030
+
1031
+ <code class="ruby"> # Creates a Fragment object</code>
1032
+ </li>
1033
+
1034
+ <li class="never" data-hits="" data-linenumber="17">
1035
+
1036
+
1037
+ <code class="ruby"> #</code>
1038
+ </li>
1039
+
1040
+ <li class="never" data-hits="" data-linenumber="18">
1041
+
1042
+
1043
+ <code class="ruby"> # Can be used at a class level</code>
1044
+ </li>
1045
+
1046
+ <li class="covered" data-hits="1" data-linenumber="19">
1047
+ <span class="hits">1</span>
1048
+
1049
+ <code class="ruby"> def self.fragment(name, on, &amp;block)</code>
1050
+ </li>
1051
+
1052
+ <li class="missed" data-hits="0" data-linenumber="20">
1053
+
1054
+
1055
+ <code class="ruby"> Fragment.new(name, on, &amp;block)</code>
1056
+ </li>
1057
+
1058
+ <li class="never" data-hits="" data-linenumber="21">
1059
+
1060
+
1061
+ <code class="ruby"> end</code>
1062
+ </li>
1063
+
1064
+ <li class="never" data-hits="" data-linenumber="22">
1065
+
1066
+
1067
+ <code class="ruby"></code>
1068
+ </li>
1069
+
1070
+ <li class="never" data-hits="" data-linenumber="23">
1071
+
1072
+
1073
+ <code class="ruby"> # Creates a Query object</code>
1074
+ </li>
1075
+
1076
+ <li class="never" data-hits="" data-linenumber="24">
1077
+
1078
+
1079
+ <code class="ruby"> #</code>
1080
+ </li>
1081
+
1082
+ <li class="never" data-hits="" data-linenumber="25">
1083
+
1084
+
1085
+ <code class="ruby"> # Can be used at an instance level</code>
1086
+ </li>
1087
+
1088
+ <li class="covered" data-hits="1" data-linenumber="26">
1089
+ <span class="hits">1</span>
1090
+
1091
+ <code class="ruby"> def query(name = nil, &amp;block)</code>
1092
+ </li>
1093
+
1094
+ <li class="covered" data-hits="1" data-linenumber="27">
1095
+ <span class="hits">1</span>
1096
+
1097
+ <code class="ruby"> Query.new(name, &amp;block)</code>
1098
+ </li>
1099
+
1100
+ <li class="never" data-hits="" data-linenumber="28">
1101
+
1102
+
1103
+ <code class="ruby"> end</code>
1104
+ </li>
1105
+
1106
+ <li class="never" data-hits="" data-linenumber="29">
1107
+
1108
+
1109
+ <code class="ruby"></code>
1110
+ </li>
1111
+
1112
+ <li class="never" data-hits="" data-linenumber="30">
1113
+
1114
+
1115
+ <code class="ruby"> # Creates a Fragment object</code>
1116
+ </li>
1117
+
1118
+ <li class="never" data-hits="" data-linenumber="31">
1119
+
1120
+
1121
+ <code class="ruby"> #</code>
1122
+ </li>
1123
+
1124
+ <li class="never" data-hits="" data-linenumber="32">
1125
+
1126
+
1127
+ <code class="ruby"> # Can be used at an instance level</code>
1128
+ </li>
1129
+
1130
+ <li class="covered" data-hits="1" data-linenumber="33">
1131
+ <span class="hits">1</span>
1132
+
1133
+ <code class="ruby"> def fragment(name, on, &amp;block)</code>
1134
+ </li>
1135
+
1136
+ <li class="covered" data-hits="3" data-linenumber="34">
1137
+ <span class="hits">3</span>
1138
+
1139
+ <code class="ruby"> Fragment.new(name, on, &amp;block)</code>
1140
+ </li>
1141
+
1142
+ <li class="never" data-hits="" data-linenumber="35">
1143
+
1144
+
1145
+ <code class="ruby"> end</code>
1146
+ </li>
1147
+
1148
+ <li class="never" data-hits="" data-linenumber="36">
1149
+
1150
+
1151
+ <code class="ruby"> end</code>
1152
+ </li>
1153
+
1154
+ <li class="never" data-hits="" data-linenumber="37">
1155
+
1156
+
1157
+ <code class="ruby">end</code>
1158
+ </li>
1159
+
1160
+ </ol>
1161
+ </pre>
1162
+ </div>
1163
+
1164
+
1165
+ <div class="source_table" id="049f7e831814eec17f9b96573767e0e1613dd427">
1166
+ <div class="header">
1167
+ <h3>lib/gqli/fragment.rb</h3>
1168
+ <h4><span class="yellow">90.0 %</span> covered</h4>
1169
+ <div>
1170
+ <b>10</b> relevant lines.
1171
+ <span class="green"><b>9</b> lines covered</span> and
1172
+ <span class="red"><b>1</b> lines missed.</span>
1173
+ </div>
1174
+ </div>
1175
+
1176
+ <pre>
1177
+ <ol>
1178
+
1179
+ <li class="never" data-hits="" data-linenumber="1">
1180
+
1181
+
1182
+ <code class="ruby"># frozen_string_literal: true</code>
1183
+ </li>
1184
+
1185
+ <li class="never" data-hits="" data-linenumber="2">
1186
+
1187
+
1188
+ <code class="ruby"></code>
1189
+ </li>
1190
+
1191
+ <li class="covered" data-hits="1" data-linenumber="3">
1192
+ <span class="hits">1</span>
1193
+
1194
+ <code class="ruby">require_relative &#39;./base&#39;</code>
1195
+ </li>
1196
+
1197
+ <li class="covered" data-hits="1" data-linenumber="4">
1198
+ <span class="hits">1</span>
1199
+
1200
+ <code class="ruby">require_relative &#39;./node&#39;</code>
1201
+ </li>
1202
+
1203
+ <li class="never" data-hits="" data-linenumber="5">
1204
+
1205
+
1206
+ <code class="ruby"></code>
1207
+ </li>
1208
+
1209
+ <li class="covered" data-hits="1" data-linenumber="6">
1210
+ <span class="hits">1</span>
1211
+
1212
+ <code class="ruby">module GQLi</code>
1213
+ </li>
1214
+
1215
+ <li class="never" data-hits="" data-linenumber="7">
1216
+
1217
+
1218
+ <code class="ruby"> # Fragment wrapper</code>
1219
+ </li>
1220
+
1221
+ <li class="covered" data-hits="1" data-linenumber="8">
1222
+ <span class="hits">1</span>
1223
+
1224
+ <code class="ruby"> class Fragment &lt; Base</code>
1225
+ </li>
1226
+
1227
+ <li class="covered" data-hits="1" data-linenumber="9">
1228
+ <span class="hits">1</span>
1229
+
1230
+ <code class="ruby"> attr_reader :__on_type</code>
1231
+ </li>
1232
+
1233
+ <li class="never" data-hits="" data-linenumber="10">
1234
+
1235
+
1236
+ <code class="ruby"></code>
1237
+ </li>
1238
+
1239
+ <li class="covered" data-hits="1" data-linenumber="11">
1240
+ <span class="hits">1</span>
1241
+
1242
+ <code class="ruby"> def initialize(name, on, &amp;block)</code>
1243
+ </li>
1244
+
1245
+ <li class="covered" data-hits="3" data-linenumber="12">
1246
+ <span class="hits">3</span>
1247
+
1248
+ <code class="ruby"> super(name, 0, &amp;block)</code>
1249
+ </li>
1250
+
1251
+ <li class="covered" data-hits="3" data-linenumber="13">
1252
+ <span class="hits">3</span>
1253
+
1254
+ <code class="ruby"> @__on_type = on</code>
1255
+ </li>
1256
+
1257
+ <li class="never" data-hits="" data-linenumber="14">
1258
+
1259
+
1260
+ <code class="ruby"> end</code>
1261
+ </li>
1262
+
1263
+ <li class="never" data-hits="" data-linenumber="15">
1264
+
1265
+
1266
+ <code class="ruby"></code>
1267
+ </li>
1268
+
1269
+ <li class="never" data-hits="" data-linenumber="16">
1270
+
1271
+
1272
+ <code class="ruby"> # Serializes to a GraphQL string</code>
1273
+ </li>
1274
+
1275
+ <li class="covered" data-hits="1" data-linenumber="17">
1276
+ <span class="hits">1</span>
1277
+
1278
+ <code class="ruby"> def to_gql</code>
1279
+ </li>
1280
+
1281
+ <li class="missed" data-hits="0" data-linenumber="18">
1282
+
1283
+
1284
+ <code class="ruby"> &lt;&lt;~GQL</code>
1285
+ </li>
1286
+
1287
+ <li class="never" data-hits="" data-linenumber="19">
1288
+
1289
+
1290
+ <code class="ruby"> fragment #{__name} on #{__on_type} {</code>
1291
+ </li>
1292
+
1293
+ <li class="never" data-hits="" data-linenumber="20">
1294
+
1295
+
1296
+ <code class="ruby"> #{__nodes.map(&amp;:to_gql).join(&quot;\n&quot;)}</code>
1297
+ </li>
1298
+
1299
+ <li class="never" data-hits="" data-linenumber="21">
1300
+
1301
+
1302
+ <code class="ruby"> }</code>
1303
+ </li>
1304
+
1305
+ <li class="never" data-hits="" data-linenumber="22">
1306
+
1307
+
1308
+ <code class="ruby"> GQL</code>
1309
+ </li>
1310
+
1311
+ <li class="never" data-hits="" data-linenumber="23">
1312
+
1313
+
1314
+ <code class="ruby"> end</code>
1315
+ </li>
1316
+
1317
+ <li class="never" data-hits="" data-linenumber="24">
1318
+
1319
+
1320
+ <code class="ruby"> end</code>
1321
+ </li>
1322
+
1323
+ <li class="never" data-hits="" data-linenumber="25">
1324
+
1325
+
1326
+ <code class="ruby">end</code>
1327
+ </li>
1328
+
1329
+ </ol>
1330
+ </pre>
1331
+ </div>
1332
+
1333
+
1334
+ <div class="source_table" id="07f15b56d18102110d4b398de85375295500eab7">
1335
+ <div class="header">
1336
+ <h3>lib/gqli/introspection.rb</h3>
1337
+ <h4><span class="green">96.88 %</span> covered</h4>
1338
+ <div>
1339
+ <b>128</b> relevant lines.
1340
+ <span class="green"><b>124</b> lines covered</span> and
1341
+ <span class="red"><b>4</b> lines missed.</span>
1342
+ </div>
1343
+ </div>
1344
+
1345
+ <pre>
1346
+ <ol>
1347
+
1348
+ <li class="never" data-hits="" data-linenumber="1">
1349
+
1350
+
1351
+ <code class="ruby"># frozen_string_literal: true</code>
1352
+ </li>
1353
+
1354
+ <li class="never" data-hits="" data-linenumber="2">
1355
+
1356
+
1357
+ <code class="ruby"></code>
1358
+ </li>
1359
+
1360
+ <li class="covered" data-hits="1" data-linenumber="3">
1361
+ <span class="hits">1</span>
1362
+
1363
+ <code class="ruby">require_relative &#39;./dsl&#39;</code>
1364
+ </li>
1365
+
1366
+ <li class="never" data-hits="" data-linenumber="4">
1367
+
1368
+
1369
+ <code class="ruby"></code>
1370
+ </li>
1371
+
1372
+ <li class="covered" data-hits="1" data-linenumber="5">
1373
+ <span class="hits">1</span>
1374
+
1375
+ <code class="ruby">module GQLi</code>
1376
+ </li>
1377
+
1378
+ <li class="never" data-hits="" data-linenumber="6">
1379
+
1380
+
1381
+ <code class="ruby"> # Introspection schema and validator</code>
1382
+ </li>
1383
+
1384
+ <li class="covered" data-hits="1" data-linenumber="7">
1385
+ <span class="hits">1</span>
1386
+
1387
+ <code class="ruby"> class Introspection</code>
1388
+ </li>
1389
+
1390
+ <li class="covered" data-hits="1" data-linenumber="8">
1391
+ <span class="hits">1</span>
1392
+
1393
+ <code class="ruby"> extend DSL</code>
1394
+ </li>
1395
+
1396
+ <li class="never" data-hits="" data-linenumber="9">
1397
+
1398
+
1399
+ <code class="ruby"></code>
1400
+ </li>
1401
+
1402
+ <li class="never" data-hits="" data-linenumber="10">
1403
+
1404
+
1405
+ <code class="ruby"> # Specific type kind introspection fragment</code>
1406
+ </li>
1407
+
1408
+ <li class="covered" data-hits="1" data-linenumber="11">
1409
+ <span class="hits">1</span>
1410
+
1411
+ <code class="ruby"> TypeRef = fragment(&#39;TypeRef&#39;, &#39;__Type&#39;) {</code>
1412
+ </li>
1413
+
1414
+ <li class="covered" data-hits="1" data-linenumber="12">
1415
+ <span class="hits">1</span>
1416
+
1417
+ <code class="ruby"> kind</code>
1418
+ </li>
1419
+
1420
+ <li class="covered" data-hits="1" data-linenumber="13">
1421
+ <span class="hits">1</span>
1422
+
1423
+ <code class="ruby"> name</code>
1424
+ </li>
1425
+
1426
+ <li class="covered" data-hits="1" data-linenumber="14">
1427
+ <span class="hits">1</span>
1428
+
1429
+ <code class="ruby"> ofType {</code>
1430
+ </li>
1431
+
1432
+ <li class="covered" data-hits="1" data-linenumber="15">
1433
+ <span class="hits">1</span>
1434
+
1435
+ <code class="ruby"> kind</code>
1436
+ </li>
1437
+
1438
+ <li class="covered" data-hits="1" data-linenumber="16">
1439
+ <span class="hits">1</span>
1440
+
1441
+ <code class="ruby"> name</code>
1442
+ </li>
1443
+
1444
+ <li class="covered" data-hits="1" data-linenumber="17">
1445
+ <span class="hits">1</span>
1446
+
1447
+ <code class="ruby"> ofType {</code>
1448
+ </li>
1449
+
1450
+ <li class="covered" data-hits="1" data-linenumber="18">
1451
+ <span class="hits">1</span>
1452
+
1453
+ <code class="ruby"> kind</code>
1454
+ </li>
1455
+
1456
+ <li class="covered" data-hits="1" data-linenumber="19">
1457
+ <span class="hits">1</span>
1458
+
1459
+ <code class="ruby"> name</code>
1460
+ </li>
1461
+
1462
+ <li class="covered" data-hits="1" data-linenumber="20">
1463
+ <span class="hits">1</span>
1464
+
1465
+ <code class="ruby"> ofType {</code>
1466
+ </li>
1467
+
1468
+ <li class="covered" data-hits="1" data-linenumber="21">
1469
+ <span class="hits">1</span>
1470
+
1471
+ <code class="ruby"> kind</code>
1472
+ </li>
1473
+
1474
+ <li class="covered" data-hits="1" data-linenumber="22">
1475
+ <span class="hits">1</span>
1476
+
1477
+ <code class="ruby"> name</code>
1478
+ </li>
1479
+
1480
+ <li class="never" data-hits="" data-linenumber="23">
1481
+
1482
+
1483
+ <code class="ruby"> }</code>
1484
+ </li>
1485
+
1486
+ <li class="never" data-hits="" data-linenumber="24">
1487
+
1488
+
1489
+ <code class="ruby"> }</code>
1490
+ </li>
1491
+
1492
+ <li class="never" data-hits="" data-linenumber="25">
1493
+
1494
+
1495
+ <code class="ruby"> }</code>
1496
+ </li>
1497
+
1498
+ <li class="never" data-hits="" data-linenumber="26">
1499
+
1500
+
1501
+ <code class="ruby"> }</code>
1502
+ </li>
1503
+
1504
+ <li class="never" data-hits="" data-linenumber="27">
1505
+
1506
+
1507
+ <code class="ruby"></code>
1508
+ </li>
1509
+
1510
+ <li class="never" data-hits="" data-linenumber="28">
1511
+
1512
+
1513
+ <code class="ruby"> # Input value introspection fragment</code>
1514
+ </li>
1515
+
1516
+ <li class="covered" data-hits="1" data-linenumber="29">
1517
+ <span class="hits">1</span>
1518
+
1519
+ <code class="ruby"> InputValue = fragment(&#39;InputValue&#39;, &#39;__InputValue&#39;) {</code>
1520
+ </li>
1521
+
1522
+ <li class="covered" data-hits="1" data-linenumber="30">
1523
+ <span class="hits">1</span>
1524
+
1525
+ <code class="ruby"> name</code>
1526
+ </li>
1527
+
1528
+ <li class="covered" data-hits="1" data-linenumber="31">
1529
+ <span class="hits">1</span>
1530
+
1531
+ <code class="ruby"> description</code>
1532
+ </li>
1533
+
1534
+ <li class="covered" data-hits="2" data-linenumber="32">
1535
+ <span class="hits">2</span>
1536
+
1537
+ <code class="ruby"> type { ___ TypeRef }</code>
1538
+ </li>
1539
+
1540
+ <li class="covered" data-hits="1" data-linenumber="33">
1541
+ <span class="hits">1</span>
1542
+
1543
+ <code class="ruby"> defaultValue</code>
1544
+ </li>
1545
+
1546
+ <li class="never" data-hits="" data-linenumber="34">
1547
+
1548
+
1549
+ <code class="ruby"> }</code>
1550
+ </li>
1551
+
1552
+ <li class="never" data-hits="" data-linenumber="35">
1553
+
1554
+
1555
+ <code class="ruby"></code>
1556
+ </li>
1557
+
1558
+ <li class="never" data-hits="" data-linenumber="36">
1559
+
1560
+
1561
+ <code class="ruby"> # Type introspection fragment</code>
1562
+ </li>
1563
+
1564
+ <li class="covered" data-hits="1" data-linenumber="37">
1565
+ <span class="hits">1</span>
1566
+
1567
+ <code class="ruby"> FullType = fragment(&#39;FullType&#39;, &#39;__Type&#39;) {</code>
1568
+ </li>
1569
+
1570
+ <li class="covered" data-hits="1" data-linenumber="38">
1571
+ <span class="hits">1</span>
1572
+
1573
+ <code class="ruby"> kind</code>
1574
+ </li>
1575
+
1576
+ <li class="covered" data-hits="1" data-linenumber="39">
1577
+ <span class="hits">1</span>
1578
+
1579
+ <code class="ruby"> name</code>
1580
+ </li>
1581
+
1582
+ <li class="covered" data-hits="1" data-linenumber="40">
1583
+ <span class="hits">1</span>
1584
+
1585
+ <code class="ruby"> description</code>
1586
+ </li>
1587
+
1588
+ <li class="covered" data-hits="1" data-linenumber="41">
1589
+ <span class="hits">1</span>
1590
+
1591
+ <code class="ruby"> fields(includeDeprecated: true) {</code>
1592
+ </li>
1593
+
1594
+ <li class="covered" data-hits="1" data-linenumber="42">
1595
+ <span class="hits">1</span>
1596
+
1597
+ <code class="ruby"> name</code>
1598
+ </li>
1599
+
1600
+ <li class="covered" data-hits="1" data-linenumber="43">
1601
+ <span class="hits">1</span>
1602
+
1603
+ <code class="ruby"> description</code>
1604
+ </li>
1605
+
1606
+ <li class="covered" data-hits="2" data-linenumber="44">
1607
+ <span class="hits">2</span>
1608
+
1609
+ <code class="ruby"> args { ___ InputValue }</code>
1610
+ </li>
1611
+
1612
+ <li class="covered" data-hits="2" data-linenumber="45">
1613
+ <span class="hits">2</span>
1614
+
1615
+ <code class="ruby"> type { ___ TypeRef }</code>
1616
+ </li>
1617
+
1618
+ <li class="covered" data-hits="1" data-linenumber="46">
1619
+ <span class="hits">1</span>
1620
+
1621
+ <code class="ruby"> isDeprecated</code>
1622
+ </li>
1623
+
1624
+ <li class="covered" data-hits="1" data-linenumber="47">
1625
+ <span class="hits">1</span>
1626
+
1627
+ <code class="ruby"> deprecationReason</code>
1628
+ </li>
1629
+
1630
+ <li class="never" data-hits="" data-linenumber="48">
1631
+
1632
+
1633
+ <code class="ruby"> }</code>
1634
+ </li>
1635
+
1636
+ <li class="covered" data-hits="2" data-linenumber="49">
1637
+ <span class="hits">2</span>
1638
+
1639
+ <code class="ruby"> inputFields { ___ InputValue }</code>
1640
+ </li>
1641
+
1642
+ <li class="covered" data-hits="2" data-linenumber="50">
1643
+ <span class="hits">2</span>
1644
+
1645
+ <code class="ruby"> interfaces { ___ TypeRef }</code>
1646
+ </li>
1647
+
1648
+ <li class="covered" data-hits="1" data-linenumber="51">
1649
+ <span class="hits">1</span>
1650
+
1651
+ <code class="ruby"> enumValues(includeDeprecated: true) {</code>
1652
+ </li>
1653
+
1654
+ <li class="covered" data-hits="1" data-linenumber="52">
1655
+ <span class="hits">1</span>
1656
+
1657
+ <code class="ruby"> name</code>
1658
+ </li>
1659
+
1660
+ <li class="covered" data-hits="1" data-linenumber="53">
1661
+ <span class="hits">1</span>
1662
+
1663
+ <code class="ruby"> description</code>
1664
+ </li>
1665
+
1666
+ <li class="covered" data-hits="1" data-linenumber="54">
1667
+ <span class="hits">1</span>
1668
+
1669
+ <code class="ruby"> isDeprecated</code>
1670
+ </li>
1671
+
1672
+ <li class="covered" data-hits="1" data-linenumber="55">
1673
+ <span class="hits">1</span>
1674
+
1675
+ <code class="ruby"> deprecationReason</code>
1676
+ </li>
1677
+
1678
+ <li class="never" data-hits="" data-linenumber="56">
1679
+
1680
+
1681
+ <code class="ruby"> }</code>
1682
+ </li>
1683
+
1684
+ <li class="covered" data-hits="2" data-linenumber="57">
1685
+ <span class="hits">2</span>
1686
+
1687
+ <code class="ruby"> possibleTypes { ___ TypeRef }</code>
1688
+ </li>
1689
+
1690
+ <li class="never" data-hits="" data-linenumber="58">
1691
+
1692
+
1693
+ <code class="ruby"> }</code>
1694
+ </li>
1695
+
1696
+ <li class="never" data-hits="" data-linenumber="59">
1697
+
1698
+
1699
+ <code class="ruby"></code>
1700
+ </li>
1701
+
1702
+ <li class="never" data-hits="" data-linenumber="60">
1703
+
1704
+
1705
+ <code class="ruby"> # Query for fetching the complete schema</code>
1706
+ </li>
1707
+
1708
+ <li class="covered" data-hits="1" data-linenumber="61">
1709
+ <span class="hits">1</span>
1710
+
1711
+ <code class="ruby"> IntrospectionQuery = query {</code>
1712
+ </li>
1713
+
1714
+ <li class="covered" data-hits="1" data-linenumber="62">
1715
+ <span class="hits">1</span>
1716
+
1717
+ <code class="ruby"> __schema {</code>
1718
+ </li>
1719
+
1720
+ <li class="covered" data-hits="2" data-linenumber="63">
1721
+ <span class="hits">2</span>
1722
+
1723
+ <code class="ruby"> queryType { name }</code>
1724
+ </li>
1725
+
1726
+ <li class="covered" data-hits="2" data-linenumber="64">
1727
+ <span class="hits">2</span>
1728
+
1729
+ <code class="ruby"> mutationType { name }</code>
1730
+ </li>
1731
+
1732
+ <li class="covered" data-hits="2" data-linenumber="65">
1733
+ <span class="hits">2</span>
1734
+
1735
+ <code class="ruby"> subscriptionType { name }</code>
1736
+ </li>
1737
+
1738
+ <li class="covered" data-hits="2" data-linenumber="66">
1739
+ <span class="hits">2</span>
1740
+
1741
+ <code class="ruby"> types { ___ FullType }</code>
1742
+ </li>
1743
+
1744
+ <li class="covered" data-hits="1" data-linenumber="67">
1745
+ <span class="hits">1</span>
1746
+
1747
+ <code class="ruby"> directives {</code>
1748
+ </li>
1749
+
1750
+ <li class="covered" data-hits="1" data-linenumber="68">
1751
+ <span class="hits">1</span>
1752
+
1753
+ <code class="ruby"> name</code>
1754
+ </li>
1755
+
1756
+ <li class="covered" data-hits="1" data-linenumber="69">
1757
+ <span class="hits">1</span>
1758
+
1759
+ <code class="ruby"> description</code>
1760
+ </li>
1761
+
1762
+ <li class="covered" data-hits="2" data-linenumber="70">
1763
+ <span class="hits">2</span>
1764
+
1765
+ <code class="ruby"> args { ___ InputValue }</code>
1766
+ </li>
1767
+
1768
+ <li class="covered" data-hits="1" data-linenumber="71">
1769
+ <span class="hits">1</span>
1770
+
1771
+ <code class="ruby"> onOperation</code>
1772
+ </li>
1773
+
1774
+ <li class="covered" data-hits="1" data-linenumber="72">
1775
+ <span class="hits">1</span>
1776
+
1777
+ <code class="ruby"> onFragment</code>
1778
+ </li>
1779
+
1780
+ <li class="covered" data-hits="1" data-linenumber="73">
1781
+ <span class="hits">1</span>
1782
+
1783
+ <code class="ruby"> onField</code>
1784
+ </li>
1785
+
1786
+ <li class="never" data-hits="" data-linenumber="74">
1787
+
1788
+
1789
+ <code class="ruby"> }</code>
1790
+ </li>
1791
+
1792
+ <li class="never" data-hits="" data-linenumber="75">
1793
+
1794
+
1795
+ <code class="ruby"> }</code>
1796
+ </li>
1797
+
1798
+ <li class="never" data-hits="" data-linenumber="76">
1799
+
1800
+
1801
+ <code class="ruby"> }</code>
1802
+ </li>
1803
+
1804
+ <li class="never" data-hits="" data-linenumber="77">
1805
+
1806
+
1807
+ <code class="ruby"></code>
1808
+ </li>
1809
+
1810
+ <li class="covered" data-hits="1" data-linenumber="78">
1811
+ <span class="hits">1</span>
1812
+
1813
+ <code class="ruby"> attr_reader :schema, :query_type, :mutation_type, :subscription_type, :types</code>
1814
+ </li>
1815
+
1816
+ <li class="never" data-hits="" data-linenumber="79">
1817
+
1818
+
1819
+ <code class="ruby"></code>
1820
+ </li>
1821
+
1822
+ <li class="covered" data-hits="1" data-linenumber="80">
1823
+ <span class="hits">1</span>
1824
+
1825
+ <code class="ruby"> def initialize(client)</code>
1826
+ </li>
1827
+
1828
+ <li class="covered" data-hits="8" data-linenumber="81">
1829
+ <span class="hits">8</span>
1830
+
1831
+ <code class="ruby"> @schema = client.execute!(IntrospectionQuery).data.__schema</code>
1832
+ </li>
1833
+
1834
+ <li class="covered" data-hits="8" data-linenumber="82">
1835
+ <span class="hits">8</span>
1836
+
1837
+ <code class="ruby"> @query_type = schema.queryType</code>
1838
+ </li>
1839
+
1840
+ <li class="covered" data-hits="8" data-linenumber="83">
1841
+ <span class="hits">8</span>
1842
+
1843
+ <code class="ruby"> @mutation_type = schema.mutationType</code>
1844
+ </li>
1845
+
1846
+ <li class="covered" data-hits="8" data-linenumber="84">
1847
+ <span class="hits">8</span>
1848
+
1849
+ <code class="ruby"> @subscription_type = schema.subscriptionType</code>
1850
+ </li>
1851
+
1852
+ <li class="covered" data-hits="8" data-linenumber="85">
1853
+ <span class="hits">8</span>
1854
+
1855
+ <code class="ruby"> @types = schema.types</code>
1856
+ </li>
1857
+
1858
+ <li class="never" data-hits="" data-linenumber="86">
1859
+
1860
+
1861
+ <code class="ruby"> end</code>
1862
+ </li>
1863
+
1864
+ <li class="never" data-hits="" data-linenumber="87">
1865
+
1866
+
1867
+ <code class="ruby"></code>
1868
+ </li>
1869
+
1870
+ <li class="never" data-hits="" data-linenumber="88">
1871
+
1872
+
1873
+ <code class="ruby"> # Returns wether the query is valid or not</code>
1874
+ </li>
1875
+
1876
+ <li class="covered" data-hits="1" data-linenumber="89">
1877
+ <span class="hits">1</span>
1878
+
1879
+ <code class="ruby"> def valid?(query)</code>
1880
+ </li>
1881
+
1882
+ <li class="covered" data-hits="7" data-linenumber="90">
1883
+ <span class="hits">7</span>
1884
+
1885
+ <code class="ruby"> return false unless query.is_a?(Query)</code>
1886
+ </li>
1887
+
1888
+ <li class="never" data-hits="" data-linenumber="91">
1889
+
1890
+
1891
+ <code class="ruby"></code>
1892
+ </li>
1893
+
1894
+ <li class="covered" data-hits="14" data-linenumber="92">
1895
+ <span class="hits">14</span>
1896
+
1897
+ <code class="ruby"> query_type = types.find { |t| t.name.casecmp(&#39;query&#39;).zero? }</code>
1898
+ </li>
1899
+
1900
+ <li class="covered" data-hits="7" data-linenumber="93">
1901
+ <span class="hits">7</span>
1902
+
1903
+ <code class="ruby"> query.__nodes.each do |node|</code>
1904
+ </li>
1905
+
1906
+ <li class="covered" data-hits="7" data-linenumber="94">
1907
+ <span class="hits">7</span>
1908
+
1909
+ <code class="ruby"> return false unless valid_node?(query_type, node)</code>
1910
+ </li>
1911
+
1912
+ <li class="never" data-hits="" data-linenumber="95">
1913
+
1914
+
1915
+ <code class="ruby"> end</code>
1916
+ </li>
1917
+
1918
+ <li class="never" data-hits="" data-linenumber="96">
1919
+
1920
+
1921
+ <code class="ruby"></code>
1922
+ </li>
1923
+
1924
+ <li class="covered" data-hits="1" data-linenumber="97">
1925
+ <span class="hits">1</span>
1926
+
1927
+ <code class="ruby"> true</code>
1928
+ </li>
1929
+
1930
+ <li class="never" data-hits="" data-linenumber="98">
1931
+
1932
+
1933
+ <code class="ruby"> end</code>
1934
+ </li>
1935
+
1936
+ <li class="never" data-hits="" data-linenumber="99">
1937
+
1938
+
1939
+ <code class="ruby"></code>
1940
+ </li>
1941
+
1942
+ <li class="covered" data-hits="1" data-linenumber="100">
1943
+ <span class="hits">1</span>
1944
+
1945
+ <code class="ruby"> private</code>
1946
+ </li>
1947
+
1948
+ <li class="never" data-hits="" data-linenumber="101">
1949
+
1950
+
1951
+ <code class="ruby"></code>
1952
+ </li>
1953
+
1954
+ <li class="covered" data-hits="1" data-linenumber="102">
1955
+ <span class="hits">1</span>
1956
+
1957
+ <code class="ruby"> def valid_node?(parent_type, node)</code>
1958
+ </li>
1959
+
1960
+ <li class="covered" data-hits="20" data-linenumber="103">
1961
+ <span class="hits">20</span>
1962
+
1963
+ <code class="ruby"> return true if parent_type.kind == &#39;SCALAR&#39;</code>
1964
+ </li>
1965
+
1966
+ <li class="never" data-hits="" data-linenumber="104">
1967
+
1968
+
1969
+ <code class="ruby"></code>
1970
+ </li>
1971
+
1972
+ <li class="covered" data-hits="20" data-linenumber="105">
1973
+ <span class="hits">20</span>
1974
+
1975
+ <code class="ruby"> return valid_match_node?(parent_type, node) if node.__name.start_with?(&#39;... on&#39;)</code>
1976
+ </li>
1977
+
1978
+ <li class="never" data-hits="" data-linenumber="106">
1979
+
1980
+
1981
+ <code class="ruby"></code>
1982
+ </li>
1983
+
1984
+ <li class="covered" data-hits="117" data-linenumber="107">
1985
+ <span class="hits">117</span>
1986
+
1987
+ <code class="ruby"> node_type = parent_type.fetch(&#39;fields&#39;, []).find { |f| f.name == node.__name }</code>
1988
+ </li>
1989
+
1990
+ <li class="covered" data-hits="18" data-linenumber="108">
1991
+ <span class="hits">18</span>
1992
+
1993
+ <code class="ruby"> return false if node_type.nil?</code>
1994
+ </li>
1995
+
1996
+ <li class="never" data-hits="" data-linenumber="109">
1997
+
1998
+
1999
+ <code class="ruby"></code>
2000
+ </li>
2001
+
2002
+ <li class="covered" data-hits="17" data-linenumber="110">
2003
+ <span class="hits">17</span>
2004
+
2005
+ <code class="ruby"> return false unless valid_params?(node_type, node)</code>
2006
+ </li>
2007
+
2008
+ <li class="never" data-hits="" data-linenumber="111">
2009
+
2010
+
2011
+ <code class="ruby"></code>
2012
+ </li>
2013
+
2014
+ <li class="covered" data-hits="15" data-linenumber="112">
2015
+ <span class="hits">15</span>
2016
+
2017
+ <code class="ruby"> resolved_node_type = type_for(node_type)</code>
2018
+ </li>
2019
+
2020
+ <li class="covered" data-hits="15" data-linenumber="113">
2021
+ <span class="hits">15</span>
2022
+
2023
+ <code class="ruby"> return false if resolved_node_type.nil?</code>
2024
+ </li>
2025
+
2026
+ <li class="never" data-hits="" data-linenumber="114">
2027
+
2028
+
2029
+ <code class="ruby"></code>
2030
+ </li>
2031
+
2032
+ <li class="covered" data-hits="15" data-linenumber="115">
2033
+ <span class="hits">15</span>
2034
+
2035
+ <code class="ruby"> return false unless valid_nesting_node?(resolved_node_type, node)</code>
2036
+ </li>
2037
+
2038
+ <li class="never" data-hits="" data-linenumber="116">
2039
+
2040
+
2041
+ <code class="ruby"></code>
2042
+ </li>
2043
+
2044
+ <li class="covered" data-hits="26" data-linenumber="117">
2045
+ <span class="hits">26</span>
2046
+
2047
+ <code class="ruby"> node.__nodes.all? { |n| valid_node?(resolved_node_type, n) }</code>
2048
+ </li>
2049
+
2050
+ <li class="never" data-hits="" data-linenumber="118">
2051
+
2052
+
2053
+ <code class="ruby"> end</code>
2054
+ </li>
2055
+
2056
+ <li class="never" data-hits="" data-linenumber="119">
2057
+
2058
+
2059
+ <code class="ruby"></code>
2060
+ </li>
2061
+
2062
+ <li class="covered" data-hits="1" data-linenumber="120">
2063
+ <span class="hits">1</span>
2064
+
2065
+ <code class="ruby"> def valid_match_node?(parent_type, node)</code>
2066
+ </li>
2067
+
2068
+ <li class="covered" data-hits="7" data-linenumber="121">
2069
+ <span class="hits">7</span>
2070
+
2071
+ <code class="ruby"> return true if parent_type.fetch(&#39;possibleTypes&#39;, []).find { |t| t.name == node.__name.gsub(&#39;... on &#39;, &#39;&#39;) }</code>
2072
+ </li>
2073
+
2074
+ <li class="covered" data-hits="1" data-linenumber="122">
2075
+ <span class="hits">1</span>
2076
+
2077
+ <code class="ruby"> false</code>
2078
+ </li>
2079
+
2080
+ <li class="never" data-hits="" data-linenumber="123">
2081
+
2082
+
2083
+ <code class="ruby"> end</code>
2084
+ </li>
2085
+
2086
+ <li class="never" data-hits="" data-linenumber="124">
2087
+
2088
+
2089
+ <code class="ruby"></code>
2090
+ </li>
2091
+
2092
+ <li class="covered" data-hits="1" data-linenumber="125">
2093
+ <span class="hits">1</span>
2094
+
2095
+ <code class="ruby"> def valid_params?(node_type, node)</code>
2096
+ </li>
2097
+
2098
+ <li class="covered" data-hits="17" data-linenumber="126">
2099
+ <span class="hits">17</span>
2100
+
2101
+ <code class="ruby"> node.__params.each do |param, value|</code>
2102
+ </li>
2103
+
2104
+ <li class="covered" data-hits="24" data-linenumber="127">
2105
+ <span class="hits">24</span>
2106
+
2107
+ <code class="ruby"> arg = node_type.fetch(&#39;args&#39;, []).find { |a| a.name == param.to_s }</code>
2108
+ </li>
2109
+
2110
+ <li class="covered" data-hits="5" data-linenumber="128">
2111
+ <span class="hits">5</span>
2112
+
2113
+ <code class="ruby"> return false if arg.nil?</code>
2114
+ </li>
2115
+
2116
+ <li class="never" data-hits="" data-linenumber="129">
2117
+
2118
+
2119
+ <code class="ruby"></code>
2120
+ </li>
2121
+
2122
+ <li class="covered" data-hits="4" data-linenumber="130">
2123
+ <span class="hits">4</span>
2124
+
2125
+ <code class="ruby"> arg_type = type_for(arg)</code>
2126
+ </li>
2127
+
2128
+ <li class="covered" data-hits="4" data-linenumber="131">
2129
+ <span class="hits">4</span>
2130
+
2131
+ <code class="ruby"> return false if arg_type.nil?</code>
2132
+ </li>
2133
+
2134
+ <li class="never" data-hits="" data-linenumber="132">
2135
+
2136
+
2137
+ <code class="ruby"></code>
2138
+ </li>
2139
+
2140
+ <li class="covered" data-hits="4" data-linenumber="133">
2141
+ <span class="hits">4</span>
2142
+
2143
+ <code class="ruby"> return false unless valid_value_for_type?(arg_type, value)</code>
2144
+ </li>
2145
+
2146
+ <li class="never" data-hits="" data-linenumber="134">
2147
+
2148
+
2149
+ <code class="ruby"> end</code>
2150
+ </li>
2151
+
2152
+ <li class="never" data-hits="" data-linenumber="135">
2153
+
2154
+
2155
+ <code class="ruby"></code>
2156
+ </li>
2157
+
2158
+ <li class="covered" data-hits="15" data-linenumber="136">
2159
+ <span class="hits">15</span>
2160
+
2161
+ <code class="ruby"> true</code>
2162
+ </li>
2163
+
2164
+ <li class="never" data-hits="" data-linenumber="137">
2165
+
2166
+
2167
+ <code class="ruby"> end</code>
2168
+ </li>
2169
+
2170
+ <li class="never" data-hits="" data-linenumber="138">
2171
+
2172
+
2173
+ <code class="ruby"></code>
2174
+ </li>
2175
+
2176
+ <li class="covered" data-hits="1" data-linenumber="139">
2177
+ <span class="hits">1</span>
2178
+
2179
+ <code class="ruby"> def valid_nesting_node?(node_type, node)</code>
2180
+ </li>
2181
+
2182
+ <li class="covered" data-hits="15" data-linenumber="140">
2183
+ <span class="hits">15</span>
2184
+
2185
+ <code class="ruby"> return false unless valid_object_node?(node_type, node)</code>
2186
+ </li>
2187
+
2188
+ <li class="covered" data-hits="13" data-linenumber="141">
2189
+ <span class="hits">13</span>
2190
+
2191
+ <code class="ruby"> return false unless valid_array_node?(node_type, node)</code>
2192
+ </li>
2193
+
2194
+ <li class="covered" data-hits="13" data-linenumber="142">
2195
+ <span class="hits">13</span>
2196
+
2197
+ <code class="ruby"> true</code>
2198
+ </li>
2199
+
2200
+ <li class="never" data-hits="" data-linenumber="143">
2201
+
2202
+
2203
+ <code class="ruby"> end</code>
2204
+ </li>
2205
+
2206
+ <li class="never" data-hits="" data-linenumber="144">
2207
+
2208
+
2209
+ <code class="ruby"></code>
2210
+ </li>
2211
+
2212
+ <li class="covered" data-hits="1" data-linenumber="145">
2213
+ <span class="hits">1</span>
2214
+
2215
+ <code class="ruby"> def valid_object_node?(node_type, node)</code>
2216
+ </li>
2217
+
2218
+ <li class="covered" data-hits="15" data-linenumber="146">
2219
+ <span class="hits">15</span>
2220
+
2221
+ <code class="ruby"> return false if %w[OBJECT INTERFACE].include?(node_type.kind) &amp;&amp; node.__nodes.empty?</code>
2222
+ </li>
2223
+
2224
+ <li class="covered" data-hits="13" data-linenumber="147">
2225
+ <span class="hits">13</span>
2226
+
2227
+ <code class="ruby"> true</code>
2228
+ </li>
2229
+
2230
+ <li class="never" data-hits="" data-linenumber="148">
2231
+
2232
+
2233
+ <code class="ruby"> end</code>
2234
+ </li>
2235
+
2236
+ <li class="never" data-hits="" data-linenumber="149">
2237
+
2238
+
2239
+ <code class="ruby"></code>
2240
+ </li>
2241
+
2242
+ <li class="covered" data-hits="1" data-linenumber="150">
2243
+ <span class="hits">1</span>
2244
+
2245
+ <code class="ruby"> def valid_array_node?(node_type, node)</code>
2246
+ </li>
2247
+
2248
+ <li class="covered" data-hits="13" data-linenumber="151">
2249
+ <span class="hits">13</span>
2250
+
2251
+ <code class="ruby"> return false if %w[OBJECT INTERFACE].include?(node_type.kind) &amp;&amp; node.__nodes.empty?</code>
2252
+ </li>
2253
+
2254
+ <li class="covered" data-hits="13" data-linenumber="152">
2255
+ <span class="hits">13</span>
2256
+
2257
+ <code class="ruby"> true</code>
2258
+ </li>
2259
+
2260
+ <li class="never" data-hits="" data-linenumber="153">
2261
+
2262
+
2263
+ <code class="ruby"> end</code>
2264
+ </li>
2265
+
2266
+ <li class="never" data-hits="" data-linenumber="154">
2267
+
2268
+
2269
+ <code class="ruby"></code>
2270
+ </li>
2271
+
2272
+ <li class="covered" data-hits="1" data-linenumber="155">
2273
+ <span class="hits">1</span>
2274
+
2275
+ <code class="ruby"> def valid_value_for_type?(arg_type, value)</code>
2276
+ </li>
2277
+
2278
+ <li class="covered" data-hits="7" data-linenumber="156">
2279
+ <span class="hits">7</span>
2280
+
2281
+ <code class="ruby"> case value</code>
2282
+ </li>
2283
+
2284
+ <li class="never" data-hits="" data-linenumber="157">
2285
+
2286
+
2287
+ <code class="ruby"> when ::String</code>
2288
+ </li>
2289
+
2290
+ <li class="covered" data-hits="4" data-linenumber="158">
2291
+ <span class="hits">4</span>
2292
+
2293
+ <code class="ruby"> return false unless arg_type.name == &#39;String&#39; || arg_type.name == &#39;ID&#39;</code>
2294
+ </li>
2295
+
2296
+ <li class="never" data-hits="" data-linenumber="159">
2297
+
2298
+
2299
+ <code class="ruby"> when ::Integer</code>
2300
+ </li>
2301
+
2302
+ <li class="covered" data-hits="1" data-linenumber="160">
2303
+ <span class="hits">1</span>
2304
+
2305
+ <code class="ruby"> return false unless arg_type.name == &#39;Int&#39;</code>
2306
+ </li>
2307
+
2308
+ <li class="never" data-hits="" data-linenumber="161">
2309
+
2310
+
2311
+ <code class="ruby"> when ::Float</code>
2312
+ </li>
2313
+
2314
+ <li class="missed" data-hits="0" data-linenumber="162">
2315
+
2316
+
2317
+ <code class="ruby"> return false unless arg_type.name == &#39;Float&#39;</code>
2318
+ </li>
2319
+
2320
+ <li class="never" data-hits="" data-linenumber="163">
2321
+
2322
+
2323
+ <code class="ruby"> when ::Hash</code>
2324
+ </li>
2325
+
2326
+ <li class="covered" data-hits="2" data-linenumber="164">
2327
+ <span class="hits">2</span>
2328
+
2329
+ <code class="ruby"> return valid_hash_value?(arg_type, value)</code>
2330
+ </li>
2331
+
2332
+ <li class="never" data-hits="" data-linenumber="165">
2333
+
2334
+
2335
+ <code class="ruby"> when true, false</code>
2336
+ </li>
2337
+
2338
+ <li class="missed" data-hits="0" data-linenumber="166">
2339
+
2340
+
2341
+ <code class="ruby"> return false unless arg_type.name == &#39;Boolean&#39;</code>
2342
+ </li>
2343
+
2344
+ <li class="never" data-hits="" data-linenumber="167">
2345
+
2346
+
2347
+ <code class="ruby"> else</code>
2348
+ </li>
2349
+
2350
+ <li class="missed" data-hits="0" data-linenumber="168">
2351
+
2352
+
2353
+ <code class="ruby"> return false</code>
2354
+ </li>
2355
+
2356
+ <li class="never" data-hits="" data-linenumber="169">
2357
+
2358
+
2359
+ <code class="ruby"> end</code>
2360
+ </li>
2361
+
2362
+ <li class="never" data-hits="" data-linenumber="170">
2363
+
2364
+
2365
+ <code class="ruby"></code>
2366
+ </li>
2367
+
2368
+ <li class="covered" data-hits="4" data-linenumber="171">
2369
+ <span class="hits">4</span>
2370
+
2371
+ <code class="ruby"> true</code>
2372
+ </li>
2373
+
2374
+ <li class="never" data-hits="" data-linenumber="172">
2375
+
2376
+
2377
+ <code class="ruby"> end</code>
2378
+ </li>
2379
+
2380
+ <li class="never" data-hits="" data-linenumber="173">
2381
+
2382
+
2383
+ <code class="ruby"></code>
2384
+ </li>
2385
+
2386
+ <li class="covered" data-hits="1" data-linenumber="174">
2387
+ <span class="hits">1</span>
2388
+
2389
+ <code class="ruby"> def valid_hash_value?(arg_type, value)</code>
2390
+ </li>
2391
+
2392
+ <li class="covered" data-hits="2" data-linenumber="175">
2393
+ <span class="hits">2</span>
2394
+
2395
+ <code class="ruby"> return false unless arg_type.kind == &#39;INPUT_OBJECT&#39;</code>
2396
+ </li>
2397
+
2398
+ <li class="never" data-hits="" data-linenumber="176">
2399
+
2400
+
2401
+ <code class="ruby"></code>
2402
+ </li>
2403
+
2404
+ <li class="covered" data-hits="48" data-linenumber="177">
2405
+ <span class="hits">48</span>
2406
+
2407
+ <code class="ruby"> type = types.find { |f| f.name == arg_type.name }</code>
2408
+ </li>
2409
+
2410
+ <li class="covered" data-hits="2" data-linenumber="178">
2411
+ <span class="hits">2</span>
2412
+
2413
+ <code class="ruby"> return false if type.nil?</code>
2414
+ </li>
2415
+
2416
+ <li class="never" data-hits="" data-linenumber="179">
2417
+
2418
+
2419
+ <code class="ruby"></code>
2420
+ </li>
2421
+
2422
+ <li class="covered" data-hits="2" data-linenumber="180">
2423
+ <span class="hits">2</span>
2424
+
2425
+ <code class="ruby"> value.each do |k, v|</code>
2426
+ </li>
2427
+
2428
+ <li class="covered" data-hits="52" data-linenumber="181">
2429
+ <span class="hits">52</span>
2430
+
2431
+ <code class="ruby"> input_field = type.fetch(&#39;inputFields&#39;, []).find { |f| f.name == k.to_s }</code>
2432
+ </li>
2433
+
2434
+ <li class="covered" data-hits="3" data-linenumber="182">
2435
+ <span class="hits">3</span>
2436
+
2437
+ <code class="ruby"> return false if input_field.nil?</code>
2438
+ </li>
2439
+
2440
+ <li class="never" data-hits="" data-linenumber="183">
2441
+
2442
+
2443
+ <code class="ruby"></code>
2444
+ </li>
2445
+
2446
+ <li class="covered" data-hits="3" data-linenumber="184">
2447
+ <span class="hits">3</span>
2448
+
2449
+ <code class="ruby"> input_field_type = type_for(input_field)</code>
2450
+ </li>
2451
+
2452
+ <li class="covered" data-hits="3" data-linenumber="185">
2453
+ <span class="hits">3</span>
2454
+
2455
+ <code class="ruby"> return false if input_field_type.nil?</code>
2456
+ </li>
2457
+
2458
+ <li class="never" data-hits="" data-linenumber="186">
2459
+
2460
+
2461
+ <code class="ruby"></code>
2462
+ </li>
2463
+
2464
+ <li class="covered" data-hits="3" data-linenumber="187">
2465
+ <span class="hits">3</span>
2466
+
2467
+ <code class="ruby"> return false unless valid_value_for_type?(input_field_type, v)</code>
2468
+ </li>
2469
+
2470
+ <li class="never" data-hits="" data-linenumber="188">
2471
+
2472
+
2473
+ <code class="ruby"> end</code>
2474
+ </li>
2475
+
2476
+ <li class="never" data-hits="" data-linenumber="189">
2477
+
2478
+
2479
+ <code class="ruby"> end</code>
2480
+ </li>
2481
+
2482
+ <li class="never" data-hits="" data-linenumber="190">
2483
+
2484
+
2485
+ <code class="ruby"></code>
2486
+ </li>
2487
+
2488
+ <li class="covered" data-hits="1" data-linenumber="191">
2489
+ <span class="hits">1</span>
2490
+
2491
+ <code class="ruby"> def type_for(field_type)</code>
2492
+ </li>
2493
+
2494
+ <li class="covered" data-hits="22" data-linenumber="192">
2495
+ <span class="hits">22</span>
2496
+
2497
+ <code class="ruby"> type = case field_type.type.kind</code>
2498
+ </li>
2499
+
2500
+ <li class="never" data-hits="" data-linenumber="193">
2501
+
2502
+
2503
+ <code class="ruby"> when &#39;NON_NULL&#39;</code>
2504
+ </li>
2505
+
2506
+ <li class="covered" data-hits="3" data-linenumber="194">
2507
+ <span class="hits">3</span>
2508
+
2509
+ <code class="ruby"> non_null_type(field_type.type.ofType)</code>
2510
+ </li>
2511
+
2512
+ <li class="never" data-hits="" data-linenumber="195">
2513
+
2514
+
2515
+ <code class="ruby"> when &#39;LIST&#39;</code>
2516
+ </li>
2517
+
2518
+ <li class="covered" data-hits="1" data-linenumber="196">
2519
+ <span class="hits">1</span>
2520
+
2521
+ <code class="ruby"> field_type.type.ofType</code>
2522
+ </li>
2523
+
2524
+ <li class="never" data-hits="" data-linenumber="197">
2525
+
2526
+
2527
+ <code class="ruby"> when &#39;OBJECT&#39;, &#39;INTERFACE&#39;, &#39;INPUT_OBJECT&#39;</code>
2528
+ </li>
2529
+
2530
+ <li class="covered" data-hits="8" data-linenumber="198">
2531
+ <span class="hits">8</span>
2532
+
2533
+ <code class="ruby"> field_type.type</code>
2534
+ </li>
2535
+
2536
+ <li class="never" data-hits="" data-linenumber="199">
2537
+
2538
+
2539
+ <code class="ruby"> when &#39;SCALAR&#39;</code>
2540
+ </li>
2541
+
2542
+ <li class="covered" data-hits="10" data-linenumber="200">
2543
+ <span class="hits">10</span>
2544
+
2545
+ <code class="ruby"> field_type.type</code>
2546
+ </li>
2547
+
2548
+ <li class="never" data-hits="" data-linenumber="201">
2549
+
2550
+
2551
+ <code class="ruby"> end</code>
2552
+ </li>
2553
+
2554
+ <li class="never" data-hits="" data-linenumber="202">
2555
+
2556
+
2557
+ <code class="ruby"></code>
2558
+ </li>
2559
+
2560
+ <li class="covered" data-hits="206" data-linenumber="203">
2561
+ <span class="hits">206</span>
2562
+
2563
+ <code class="ruby"> types.find { |t| t.name == type.name }</code>
2564
+ </li>
2565
+
2566
+ <li class="never" data-hits="" data-linenumber="204">
2567
+
2568
+
2569
+ <code class="ruby"> end</code>
2570
+ </li>
2571
+
2572
+ <li class="never" data-hits="" data-linenumber="205">
2573
+
2574
+
2575
+ <code class="ruby"></code>
2576
+ </li>
2577
+
2578
+ <li class="covered" data-hits="1" data-linenumber="206">
2579
+ <span class="hits">1</span>
2580
+
2581
+ <code class="ruby"> def non_null_type(non_null)</code>
2582
+ </li>
2583
+
2584
+ <li class="covered" data-hits="3" data-linenumber="207">
2585
+ <span class="hits">3</span>
2586
+
2587
+ <code class="ruby"> case non_null.kind</code>
2588
+ </li>
2589
+
2590
+ <li class="never" data-hits="" data-linenumber="208">
2591
+
2592
+
2593
+ <code class="ruby"> when &#39;LIST&#39;</code>
2594
+ </li>
2595
+
2596
+ <li class="covered" data-hits="3" data-linenumber="209">
2597
+ <span class="hits">3</span>
2598
+
2599
+ <code class="ruby"> non_null.ofType</code>
2600
+ </li>
2601
+
2602
+ <li class="never" data-hits="" data-linenumber="210">
2603
+
2604
+
2605
+ <code class="ruby"> else</code>
2606
+ </li>
2607
+
2608
+ <li class="missed" data-hits="0" data-linenumber="211">
2609
+
2610
+
2611
+ <code class="ruby"> non_null</code>
2612
+ </li>
2613
+
2614
+ <li class="never" data-hits="" data-linenumber="212">
2615
+
2616
+
2617
+ <code class="ruby"> end</code>
2618
+ </li>
2619
+
2620
+ <li class="never" data-hits="" data-linenumber="213">
2621
+
2622
+
2623
+ <code class="ruby"> end</code>
2624
+ </li>
2625
+
2626
+ <li class="never" data-hits="" data-linenumber="214">
2627
+
2628
+
2629
+ <code class="ruby"> end</code>
2630
+ </li>
2631
+
2632
+ <li class="never" data-hits="" data-linenumber="215">
2633
+
2634
+
2635
+ <code class="ruby">end</code>
2636
+ </li>
2637
+
2638
+ </ol>
2639
+ </pre>
2640
+ </div>
2641
+
2642
+
2643
+ <div class="source_table" id="827311add0f30734381233709eff6f2feef29107">
2644
+ <div class="header">
2645
+ <h3>lib/gqli/node.rb</h3>
2646
+ <h4><span class="yellow">88.0 %</span> covered</h4>
2647
+ <div>
2648
+ <b>25</b> relevant lines.
2649
+ <span class="green"><b>22</b> lines covered</span> and
2650
+ <span class="red"><b>3</b> lines missed.</span>
2651
+ </div>
2652
+ </div>
2653
+
2654
+ <pre>
2655
+ <ol>
2656
+
2657
+ <li class="never" data-hits="" data-linenumber="1">
2658
+
2659
+
2660
+ <code class="ruby"># frozen_string_literal: true</code>
2661
+ </li>
2662
+
2663
+ <li class="never" data-hits="" data-linenumber="2">
2664
+
2665
+
2666
+ <code class="ruby"></code>
2667
+ </li>
2668
+
2669
+ <li class="covered" data-hits="1" data-linenumber="3">
2670
+ <span class="hits">1</span>
2671
+
2672
+ <code class="ruby">require_relative &#39;./base&#39;</code>
2673
+ </li>
2674
+
2675
+ <li class="never" data-hits="" data-linenumber="4">
2676
+
2677
+
2678
+ <code class="ruby"></code>
2679
+ </li>
2680
+
2681
+ <li class="covered" data-hits="1" data-linenumber="5">
2682
+ <span class="hits">1</span>
2683
+
2684
+ <code class="ruby">module GQLi</code>
2685
+ </li>
2686
+
2687
+ <li class="never" data-hits="" data-linenumber="6">
2688
+
2689
+
2690
+ <code class="ruby"> # Node wrapper</code>
2691
+ </li>
2692
+
2693
+ <li class="covered" data-hits="1" data-linenumber="7">
2694
+ <span class="hits">1</span>
2695
+
2696
+ <code class="ruby"> class Node &lt; Base</code>
2697
+ </li>
2698
+
2699
+ <li class="covered" data-hits="1" data-linenumber="8">
2700
+ <span class="hits">1</span>
2701
+
2702
+ <code class="ruby"> attr_reader :__params</code>
2703
+ </li>
2704
+
2705
+ <li class="never" data-hits="" data-linenumber="9">
2706
+
2707
+
2708
+ <code class="ruby"></code>
2709
+ </li>
2710
+
2711
+ <li class="covered" data-hits="1" data-linenumber="10">
2712
+ <span class="hits">1</span>
2713
+
2714
+ <code class="ruby"> def initialize(name, params = {}, depth = 1, &amp;block)</code>
2715
+ </li>
2716
+
2717
+ <li class="covered" data-hits="244" data-linenumber="11">
2718
+ <span class="hits">244</span>
2719
+
2720
+ <code class="ruby"> super(name, depth, &amp;block)</code>
2721
+ </li>
2722
+
2723
+ <li class="covered" data-hits="244" data-linenumber="12">
2724
+ <span class="hits">244</span>
2725
+
2726
+ <code class="ruby"> @__params = params</code>
2727
+ </li>
2728
+
2729
+ <li class="never" data-hits="" data-linenumber="13">
2730
+
2731
+
2732
+ <code class="ruby"> end</code>
2733
+ </li>
2734
+
2735
+ <li class="never" data-hits="" data-linenumber="14">
2736
+
2737
+
2738
+ <code class="ruby"></code>
2739
+ </li>
2740
+
2741
+ <li class="never" data-hits="" data-linenumber="15">
2742
+
2743
+
2744
+ <code class="ruby"> # Serializes to a GraphQL string</code>
2745
+ </li>
2746
+
2747
+ <li class="covered" data-hits="1" data-linenumber="16">
2748
+ <span class="hits">1</span>
2749
+
2750
+ <code class="ruby"> def to_gql</code>
2751
+ </li>
2752
+
2753
+ <li class="covered" data-hits="888" data-linenumber="17">
2754
+ <span class="hits">888</span>
2755
+
2756
+ <code class="ruby"> result = &#39; &#39; * __depth + __name</code>
2757
+ </li>
2758
+
2759
+ <li class="covered" data-hits="888" data-linenumber="18">
2760
+ <span class="hits">888</span>
2761
+
2762
+ <code class="ruby"> result += &#39;(&#39; + __params_to_s(__params, true) + &#39;)&#39; unless __params.empty?</code>
2763
+ </li>
2764
+
2765
+ <li class="covered" data-hits="888" data-linenumber="19">
2766
+ <span class="hits">888</span>
2767
+
2768
+ <code class="ruby"> unless __nodes.empty?</code>
2769
+ </li>
2770
+
2771
+ <li class="covered" data-hits="280" data-linenumber="20">
2772
+ <span class="hits">280</span>
2773
+
2774
+ <code class="ruby"> result += &quot; {\n&quot;</code>
2775
+ </li>
2776
+
2777
+ <li class="covered" data-hits="280" data-linenumber="21">
2778
+ <span class="hits">280</span>
2779
+
2780
+ <code class="ruby"> result += __nodes.map(&amp;:to_gql).join(&quot;\n&quot;)</code>
2781
+ </li>
2782
+
2783
+ <li class="covered" data-hits="280" data-linenumber="22">
2784
+ <span class="hits">280</span>
2785
+
2786
+ <code class="ruby"> result += &quot;\n#{&#39; &#39; * __depth}}&quot;</code>
2787
+ </li>
2788
+
2789
+ <li class="never" data-hits="" data-linenumber="23">
2790
+
2791
+
2792
+ <code class="ruby"> end</code>
2793
+ </li>
2794
+
2795
+ <li class="never" data-hits="" data-linenumber="24">
2796
+
2797
+
2798
+ <code class="ruby"></code>
2799
+ </li>
2800
+
2801
+ <li class="covered" data-hits="888" data-linenumber="25">
2802
+ <span class="hits">888</span>
2803
+
2804
+ <code class="ruby"> result</code>
2805
+ </li>
2806
+
2807
+ <li class="never" data-hits="" data-linenumber="26">
2808
+
2809
+
2810
+ <code class="ruby"> end</code>
2811
+ </li>
2812
+
2813
+ <li class="never" data-hits="" data-linenumber="27">
2814
+
2815
+
2816
+ <code class="ruby"></code>
2817
+ </li>
2818
+
2819
+ <li class="covered" data-hits="1" data-linenumber="28">
2820
+ <span class="hits">1</span>
2821
+
2822
+ <code class="ruby"> private</code>
2823
+ </li>
2824
+
2825
+ <li class="never" data-hits="" data-linenumber="29">
2826
+
2827
+
2828
+ <code class="ruby"></code>
2829
+ </li>
2830
+
2831
+ <li class="covered" data-hits="1" data-linenumber="30">
2832
+ <span class="hits">1</span>
2833
+
2834
+ <code class="ruby"> def __params_to_s(params, initial = false)</code>
2835
+ </li>
2836
+
2837
+ <li class="covered" data-hits="32" data-linenumber="31">
2838
+ <span class="hits">32</span>
2839
+
2840
+ <code class="ruby"> case params</code>
2841
+ </li>
2842
+
2843
+ <li class="never" data-hits="" data-linenumber="32">
2844
+
2845
+
2846
+ <code class="ruby"> when ::Hash</code>
2847
+ </li>
2848
+
2849
+ <li class="covered" data-hits="16" data-linenumber="33">
2850
+ <span class="hits">16</span>
2851
+
2852
+ <code class="ruby"> result = params.map do |k, v|</code>
2853
+ </li>
2854
+
2855
+ <li class="covered" data-hits="16" data-linenumber="34">
2856
+ <span class="hits">16</span>
2857
+
2858
+ <code class="ruby"> &quot;#{k}: #{__params_to_s(v)}&quot;</code>
2859
+ </li>
2860
+
2861
+ <li class="never" data-hits="" data-linenumber="35">
2862
+
2863
+
2864
+ <code class="ruby"> end.join(&#39;, &#39;)</code>
2865
+ </li>
2866
+
2867
+ <li class="never" data-hits="" data-linenumber="36">
2868
+
2869
+
2870
+ <code class="ruby"></code>
2871
+ </li>
2872
+
2873
+ <li class="covered" data-hits="16" data-linenumber="37">
2874
+ <span class="hits">16</span>
2875
+
2876
+ <code class="ruby"> return result if initial</code>
2877
+ </li>
2878
+
2879
+ <li class="missed" data-hits="0" data-linenumber="38">
2880
+
2881
+
2882
+ <code class="ruby"> &quot;{#{result}}&quot;</code>
2883
+ </li>
2884
+
2885
+ <li class="never" data-hits="" data-linenumber="39">
2886
+
2887
+
2888
+ <code class="ruby"> when ::Array</code>
2889
+ </li>
2890
+
2891
+ <li class="missed" data-hits="0" data-linenumber="40">
2892
+
2893
+
2894
+ <code class="ruby"> &quot;[#{params.map { |p| __params_to_s(p) }.join(&#39;, &#39;)}]&quot;</code>
2895
+ </li>
2896
+
2897
+ <li class="never" data-hits="" data-linenumber="41">
2898
+
2899
+
2900
+ <code class="ruby"> when ::String</code>
2901
+ </li>
2902
+
2903
+ <li class="missed" data-hits="0" data-linenumber="42">
2904
+
2905
+
2906
+ <code class="ruby"> &quot;\&quot;#{params}\&quot;&quot;</code>
2907
+ </li>
2908
+
2909
+ <li class="never" data-hits="" data-linenumber="43">
2910
+
2911
+
2912
+ <code class="ruby"> else</code>
2913
+ </li>
2914
+
2915
+ <li class="covered" data-hits="16" data-linenumber="44">
2916
+ <span class="hits">16</span>
2917
+
2918
+ <code class="ruby"> params.to_s</code>
2919
+ </li>
2920
+
2921
+ <li class="never" data-hits="" data-linenumber="45">
2922
+
2923
+
2924
+ <code class="ruby"> end</code>
2925
+ </li>
2926
+
2927
+ <li class="never" data-hits="" data-linenumber="46">
2928
+
2929
+
2930
+ <code class="ruby"> end</code>
2931
+ </li>
2932
+
2933
+ <li class="never" data-hits="" data-linenumber="47">
2934
+
2935
+
2936
+ <code class="ruby"> end</code>
2937
+ </li>
2938
+
2939
+ <li class="never" data-hits="" data-linenumber="48">
2940
+
2941
+
2942
+ <code class="ruby">end</code>
2943
+ </li>
2944
+
2945
+ </ol>
2946
+ </pre>
2947
+ </div>
2948
+
2949
+
2950
+ <div class="source_table" id="add3b96d53406d04d830c517b925e60e5592500d">
2951
+ <div class="header">
2952
+ <h3>lib/gqli/query.rb</h3>
2953
+ <h4><span class="red">80.0 %</span> covered</h4>
2954
+ <div>
2955
+ <b>10</b> relevant lines.
2956
+ <span class="green"><b>8</b> lines covered</span> and
2957
+ <span class="red"><b>2</b> lines missed.</span>
2958
+ </div>
2959
+ </div>
2960
+
2961
+ <pre>
2962
+ <ol>
2963
+
2964
+ <li class="never" data-hits="" data-linenumber="1">
2965
+
2966
+
2967
+ <code class="ruby"># frozen_string_literal: true</code>
2968
+ </li>
2969
+
2970
+ <li class="never" data-hits="" data-linenumber="2">
2971
+
2972
+
2973
+ <code class="ruby"></code>
2974
+ </li>
2975
+
2976
+ <li class="covered" data-hits="1" data-linenumber="3">
2977
+ <span class="hits">1</span>
2978
+
2979
+ <code class="ruby">require_relative &#39;./base&#39;</code>
2980
+ </li>
2981
+
2982
+ <li class="never" data-hits="" data-linenumber="4">
2983
+
2984
+
2985
+ <code class="ruby"></code>
2986
+ </li>
2987
+
2988
+ <li class="covered" data-hits="1" data-linenumber="5">
2989
+ <span class="hits">1</span>
2990
+
2991
+ <code class="ruby">module GQLi</code>
2992
+ </li>
2993
+
2994
+ <li class="never" data-hits="" data-linenumber="6">
2995
+
2996
+
2997
+ <code class="ruby"> # Query node</code>
2998
+ </li>
2999
+
3000
+ <li class="covered" data-hits="1" data-linenumber="7">
3001
+ <span class="hits">1</span>
3002
+
3003
+ <code class="ruby"> class Query &lt; Base</code>
3004
+ </li>
3005
+
3006
+ <li class="never" data-hits="" data-linenumber="8">
3007
+
3008
+
3009
+ <code class="ruby"> # Serializes to a GraphQL string</code>
3010
+ </li>
3011
+
3012
+ <li class="covered" data-hits="1" data-linenumber="9">
3013
+ <span class="hits">1</span>
3014
+
3015
+ <code class="ruby"> def to_gql</code>
3016
+ </li>
3017
+
3018
+ <li class="covered" data-hits="8" data-linenumber="10">
3019
+ <span class="hits">8</span>
3020
+
3021
+ <code class="ruby"> result = &lt;&lt;~GQL</code>
3022
+ </li>
3023
+
3024
+ <li class="never" data-hits="" data-linenumber="11">
3025
+
3026
+
3027
+ <code class="ruby"> query #{__name ? __name + &#39; &#39; : &#39;&#39;}{</code>
3028
+ </li>
3029
+
3030
+ <li class="never" data-hits="" data-linenumber="12">
3031
+
3032
+
3033
+ <code class="ruby"> #{__nodes.map(&amp;:to_gql).join(&quot;\n&quot;)}</code>
3034
+ </li>
3035
+
3036
+ <li class="never" data-hits="" data-linenumber="13">
3037
+
3038
+
3039
+ <code class="ruby"> }</code>
3040
+ </li>
3041
+
3042
+ <li class="never" data-hits="" data-linenumber="14">
3043
+
3044
+
3045
+ <code class="ruby"> GQL</code>
3046
+ </li>
3047
+
3048
+ <li class="never" data-hits="" data-linenumber="15">
3049
+
3050
+
3051
+ <code class="ruby"></code>
3052
+ </li>
3053
+
3054
+ <li class="covered" data-hits="8" data-linenumber="16">
3055
+ <span class="hits">8</span>
3056
+
3057
+ <code class="ruby"> result.lstrip</code>
3058
+ </li>
3059
+
3060
+ <li class="never" data-hits="" data-linenumber="17">
3061
+
3062
+
3063
+ <code class="ruby"> end</code>
3064
+ </li>
3065
+
3066
+ <li class="never" data-hits="" data-linenumber="18">
3067
+
3068
+
3069
+ <code class="ruby"></code>
3070
+ </li>
3071
+
3072
+ <li class="never" data-hits="" data-linenumber="19">
3073
+
3074
+
3075
+ <code class="ruby"> # Delegates itself to the client to be executed</code>
3076
+ </li>
3077
+
3078
+ <li class="covered" data-hits="1" data-linenumber="20">
3079
+ <span class="hits">1</span>
3080
+
3081
+ <code class="ruby"> def __execute(client)</code>
3082
+ </li>
3083
+
3084
+ <li class="missed" data-hits="0" data-linenumber="21">
3085
+
3086
+
3087
+ <code class="ruby"> client.execute(self)</code>
3088
+ </li>
3089
+
3090
+ <li class="never" data-hits="" data-linenumber="22">
3091
+
3092
+
3093
+ <code class="ruby"> end</code>
3094
+ </li>
3095
+
3096
+ <li class="never" data-hits="" data-linenumber="23">
3097
+
3098
+
3099
+ <code class="ruby"></code>
3100
+ </li>
3101
+
3102
+ <li class="never" data-hits="" data-linenumber="24">
3103
+
3104
+
3105
+ <code class="ruby"> # Serializes to a GraphQL string</code>
3106
+ </li>
3107
+
3108
+ <li class="covered" data-hits="1" data-linenumber="25">
3109
+ <span class="hits">1</span>
3110
+
3111
+ <code class="ruby"> def to_s</code>
3112
+ </li>
3113
+
3114
+ <li class="missed" data-hits="0" data-linenumber="26">
3115
+
3116
+
3117
+ <code class="ruby"> to_gql</code>
3118
+ </li>
3119
+
3120
+ <li class="never" data-hits="" data-linenumber="27">
3121
+
3122
+
3123
+ <code class="ruby"> end</code>
3124
+ </li>
3125
+
3126
+ <li class="never" data-hits="" data-linenumber="28">
3127
+
3128
+
3129
+ <code class="ruby"> end</code>
3130
+ </li>
3131
+
3132
+ <li class="never" data-hits="" data-linenumber="29">
3133
+
3134
+
3135
+ <code class="ruby">end</code>
3136
+ </li>
3137
+
3138
+ </ol>
3139
+ </pre>
3140
+ </div>
3141
+
3142
+
3143
+ <div class="source_table" id="fc631e4d066aa11a78ad288ef5341c2bc5e2fd9d">
3144
+ <div class="header">
3145
+ <h3>lib/gqli/response.rb</h3>
3146
+ <h4><span class="green">100.0 %</span> covered</h4>
3147
+ <div>
3148
+ <b>7</b> relevant lines.
3149
+ <span class="green"><b>7</b> lines covered</span> and
3150
+ <span class="red"><b>0</b> lines missed.</span>
3151
+ </div>
3152
+ </div>
3153
+
3154
+ <pre>
3155
+ <ol>
3156
+
3157
+ <li class="never" data-hits="" data-linenumber="1">
3158
+
3159
+
3160
+ <code class="ruby"># frozen_string_literal: true</code>
3161
+ </li>
3162
+
3163
+ <li class="never" data-hits="" data-linenumber="2">
3164
+
3165
+
3166
+ <code class="ruby"></code>
3167
+ </li>
3168
+
3169
+ <li class="covered" data-hits="1" data-linenumber="3">
3170
+ <span class="hits">1</span>
3171
+
3172
+ <code class="ruby">require &#39;hashie/mash&#39;</code>
3173
+ </li>
3174
+
3175
+ <li class="never" data-hits="" data-linenumber="4">
3176
+
3177
+
3178
+ <code class="ruby"></code>
3179
+ </li>
3180
+
3181
+ <li class="covered" data-hits="1" data-linenumber="5">
3182
+ <span class="hits">1</span>
3183
+
3184
+ <code class="ruby">module GQLi</code>
3185
+ </li>
3186
+
3187
+ <li class="never" data-hits="" data-linenumber="6">
3188
+
3189
+
3190
+ <code class="ruby"> # Response object wrapper</code>
3191
+ </li>
3192
+
3193
+ <li class="covered" data-hits="1" data-linenumber="7">
3194
+ <span class="hits">1</span>
3195
+
3196
+ <code class="ruby"> class Response</code>
3197
+ </li>
3198
+
3199
+ <li class="covered" data-hits="1" data-linenumber="8">
3200
+ <span class="hits">1</span>
3201
+
3202
+ <code class="ruby"> attr_reader :data, :query</code>
3203
+ </li>
3204
+
3205
+ <li class="never" data-hits="" data-linenumber="9">
3206
+
3207
+
3208
+ <code class="ruby"></code>
3209
+ </li>
3210
+
3211
+ <li class="covered" data-hits="1" data-linenumber="10">
3212
+ <span class="hits">1</span>
3213
+
3214
+ <code class="ruby"> def initialize(data, query)</code>
3215
+ </li>
3216
+
3217
+ <li class="covered" data-hits="8" data-linenumber="11">
3218
+ <span class="hits">8</span>
3219
+
3220
+ <code class="ruby"> @data = Hashie::Mash.new(data)</code>
3221
+ </li>
3222
+
3223
+ <li class="covered" data-hits="8" data-linenumber="12">
3224
+ <span class="hits">8</span>
3225
+
3226
+ <code class="ruby"> @query = query</code>
3227
+ </li>
3228
+
3229
+ <li class="never" data-hits="" data-linenumber="13">
3230
+
3231
+
3232
+ <code class="ruby"> end</code>
3233
+ </li>
3234
+
3235
+ <li class="never" data-hits="" data-linenumber="14">
3236
+
3237
+
3238
+ <code class="ruby"> end</code>
3239
+ </li>
3240
+
3241
+ <li class="never" data-hits="" data-linenumber="15">
3242
+
3243
+
3244
+ <code class="ruby">end</code>
3245
+ </li>
3246
+
3247
+ </ol>
3248
+ </pre>
3249
+ </div>
3250
+
3251
+
3252
+ </div>
3253
+ </div>
3254
+ </body>
3255
+ </html>