Completed
Push — master ( 4920c5...d4602c )
by Alexandr
06:41 queued 03:16
created
src/Execution/Visitor/MaxComplexityQueryVisitor.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -24,7 +24,7 @@
 block discarded – undo
24 24
     }
25 25
     $this->memo += $cost ?: $this->defaultScore;
26 26
     if ($this->memo > $this->maxScore) {
27
-      throw new \Exception('query exceeded max allowed complexity of ' . $this->maxScore);
27
+      throw new \Exception('query exceeded max allowed complexity of '.$this->maxScore);
28 28
     }
29 29
     return $this->memo;
30 30
   }
Please login to merge, or discard this patch.
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -16,40 +16,40 @@
 block discarded – undo
16 16
 
17 17
 class MaxComplexityQueryVisitor extends AbstractQueryVisitor {
18 18
 
19
-  /**
20
-   * @var int max score allowed before throwing an exception (causing processing to stop)
21
-   */
22
-  public $maxScore;
23
-
24
-  /**
25
-   * @var int default score for nodes without explicit cost functions
26
-   */
27
-  protected $defaultScore = 1;
28
-
29
-  /**
30
-   * MaxComplexityQueryVisitor constructor.
31
-   *
32
-   * @param int $max max allowed complexity score
33
-   */
34
-  public function __construct($max) {
19
+    /**
20
+     * @var int max score allowed before throwing an exception (causing processing to stop)
21
+     */
22
+    public $maxScore;
23
+
24
+    /**
25
+     * @var int default score for nodes without explicit cost functions
26
+     */
27
+    protected $defaultScore = 1;
28
+
29
+    /**
30
+     * MaxComplexityQueryVisitor constructor.
31
+     *
32
+     * @param int $max max allowed complexity score
33
+     */
34
+    public function __construct($max) {
35 35
     parent::__construct();
36 36
 
37 37
     $this->maxScore = $max;
38
-  }
38
+    }
39 39
 
40
-  /**
41
-   * {@inheritdoc}
42
-   */
43
-  public function visit(array $args, FieldConfig $fieldConfig, $childScore = 0) {
40
+    /**
41
+     * {@inheritdoc}
42
+     */
43
+    public function visit(array $args, FieldConfig $fieldConfig, $childScore = 0) {
44 44
     $cost = $fieldConfig->get('cost');
45 45
     if (is_callable($cost)) {
46
-      $cost = $cost($args, $fieldConfig, $childScore);
46
+        $cost = $cost($args, $fieldConfig, $childScore);
47 47
     }
48 48
     $cost = $cost ?: $this->defaultScore;
49 49
     $this->memo += $cost;
50 50
     if ($this->memo > $this->maxScore) {
51
-      throw new \Exception('query exceeded max allowed complexity of ' . $this->maxScore);
51
+        throw new \Exception('query exceeded max allowed complexity of ' . $this->maxScore);
52 52
     }
53 53
     return $cost;
54
-  }
54
+    }
55 55
 }
56 56
\ No newline at end of file
Please login to merge, or discard this patch.
src/Introspection/QueryType.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
     public static function resolveOfType(AbstractType $value)
37 37
     {
38 38
         if ($value instanceof CompositeTypeInterface) {
39
-           return $value->getTypeOf();
39
+            return $value->getTypeOf();
40 40
         }
41 41
 
42 42
         return null;
Please login to merge, or discard this patch.
src/Type/TypeFactory.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -35,13 +35,13 @@
 block discarded – undo
35 35
             if (empty(self::$objectsHash[$type])) {
36 36
                 $name = ucfirst($type);
37 37
 
38
-                $className                = 'Youshido\GraphQL\Type\Scalar\\' . $name . 'Type';
38
+                $className                = 'Youshido\GraphQL\Type\Scalar\\'.$name.'Type';
39 39
                 self::$objectsHash[$type] = new $className();
40 40
             }
41 41
 
42 42
             return self::$objectsHash[$type];
43 43
         } else {
44
-            throw new ConfigurationException('Configuration problem with type ' . $type);
44
+            throw new ConfigurationException('Configuration problem with type '.$type);
45 45
         }
46 46
     }
47 47
 
Please login to merge, or discard this patch.
Tests/Library/Type/ScalarExtendTypeTest.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -27,13 +27,13 @@
 block discarded – undo
27 27
                 'title' => new StringType(),
28 28
             ]
29 29
         ]);
30
-        $processor  = new Processor(new Schema([
30
+        $processor = new Processor(new Schema([
31 31
                 'query' => new ObjectType([
32 32
                     'name'   => 'RootQueryType',
33 33
                     'fields' => [
34 34
                         'latestReport' => [
35 35
                             'type'    => $reportType,
36
-                            'resolve' => function () {
36
+                            'resolve' => function() {
37 37
                                 return [
38 38
                                     'title' => 'Accident #1',
39 39
                                     'time'  => '13:30:12',
Please login to merge, or discard this patch.
src/Execution/Processor.php 3 patches
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -168,7 +168,9 @@
 block discarded – undo
168 168
         $value = [];
169 169
 
170 170
         if ($fieldType->getKind() == TypeMap::KIND_LIST) {
171
-            if (!$this->resolveValidator->hasArrayAccess($resolvedValue)) return null;
171
+            if (!$this->resolveValidator->hasArrayAccess($resolvedValue)) {
172
+                return null;
173
+            }
172 174
             foreach ($resolvedValue as $resolvedValueItem) {
173 175
                 $value[] = [];
174 176
                 $index   = count($value) - 1;
Please login to merge, or discard this patch.
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
     }
111 111
 
112 112
     /**
113
-     * @param Query|Field        $query
113
+     * @param Query        $query
114 114
      * @param AbstractObjectType $currentLevelSchema
115 115
      * @return array|bool|mixed
116 116
      */
@@ -317,7 +317,7 @@  discard block
 block discarded – undo
317 317
     }
318 318
 
319 319
     /**
320
-     * @param $query         Query|FragmentInterface
320
+     * @param Query $query         Query|FragmentInterface
321 321
      * @param $queryType     AbstractObjectType|TypeInterface|Field|AbstractType
322 322
      * @param $resolvedValue mixed
323 323
      * @param $value         array
@@ -497,7 +497,7 @@  discard block
 block discarded – undo
497 497
      * Fragments (anonymous and named), and Fields.  The core of the function is simple: recurse until we hit the base
498 498
      * case of a Field and yield that back up to the visitor up in `doVisit`.
499 499
      *
500
-     * @param Query|Field|FragmentInterface $queryNode
500
+     * @param Query $queryNode
501 501
      * @param AbstractField                 $currentLevelAST
502 502
      *
503 503
      * @return \Generator
Please login to merge, or discard this patch.
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -27,7 +27,6 @@
 block discarded – undo
27 27
 use Youshido\GraphQL\Schema\AbstractSchema;
28 28
 use Youshido\GraphQL\Type\AbstractType;
29 29
 use Youshido\GraphQL\Type\Object\AbstractObjectType;
30
-use Youshido\GraphQL\Type\Scalar\AbstractScalarType;
31 30
 use Youshido\GraphQL\Type\TypeInterface;
32 31
 use Youshido\GraphQL\Type\TypeMap;
33 32
 use Youshido\GraphQL\Type\TypeService;
Please login to merge, or discard this patch.
Tests/Schema/ProcessorTest.php 2 patches
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -93,14 +93,14 @@  discard block
 block discarded – undo
93 93
                 'fields' => [
94 94
                     'list' => [
95 95
                         'type'    => new ListType(new StringType()),
96
-                        'resolve' => function () {
96
+                        'resolve' => function() {
97 97
                             return null;
98 98
                         }
99 99
                     ]
100 100
                 ]
101 101
             ])
102 102
         ]));
103
-        $data      = $processor->processPayload(' { list }')->getResponseData();
103
+        $data = $processor->processPayload(' { list }')->getResponseData();
104 104
         $this->assertEquals(['data' => ['list' => null]], $data);
105 105
     }
106 106
 
@@ -113,20 +113,20 @@  discard block
 block discarded – undo
113 113
                 'fields' => [
114 114
                     'list' => [
115 115
                         'type'    => new ListType(new StringType()),
116
-                        'resolve' => function () {
116
+                        'resolve' => function() {
117 117
                             return null;
118 118
                         }
119 119
                     ]
120 120
                 ]
121 121
             ])
122 122
         ]));
123
-        $data      = $processor->processPayload(' { __schema { subscriptionType { name } } }')->getResponseData();
123
+        $data = $processor->processPayload(' { __schema { subscriptionType { name } } }')->getResponseData();
124 124
         $this->assertEquals(['data' => ['__schema' => ['subscriptionType' => null]]], $data);
125 125
     }
126 126
 
127 127
     public function testSchemaOperations()
128 128
     {
129
-        $schema    = new Schema([
129
+        $schema = new Schema([
130 130
             'query' => new ObjectType([
131 131
                 'name'   => 'RootQuery',
132 132
                 'fields' => [
@@ -139,13 +139,13 @@  discard block
 block discarded – undo
139 139
                                     'args'    => [
140 140
                                         'shorten' => new BooleanType()
141 141
                                     ],
142
-                                    'resolve' => function ($value, $args) {
142
+                                    'resolve' => function($value, $args) {
143 143
                                         return empty($args['shorten']) ? $value : $value;
144 144
                                     }
145 145
                                 ],
146 146
                                 'id_alias'  => [
147 147
                                     'type'    => new IdType(),
148
-                                    'resolve' => function ($value) {
148
+                                    'resolve' => function($value) {
149 149
                                         return $value['id'];
150 150
                                     }
151 151
                                 ],
@@ -153,7 +153,7 @@  discard block
 block discarded – undo
153 153
                                 'code'      => new StringType(),
154 154
                             ]
155 155
                         ]),
156
-                        'resolve' => function ($value, $args) {
156
+                        'resolve' => function($value, $args) {
157 157
                             $data = ['id' => '123', 'firstName' => 'John', 'code' => '007'];
158 158
                             if (!empty($args['upper'])) {
159 159
                                 foreach ($data as $key => $value) {
@@ -172,19 +172,19 @@  discard block
 block discarded – undo
172 172
                     ],
173 173
                     'randomUser'        => [
174 174
                         'type'    => new TestObjectType(),
175
-                        'resolve' => function () {
175
+                        'resolve' => function() {
176 176
                             return ['invalidField' => 'John'];
177 177
                         }
178 178
                     ],
179 179
                     'invalidValueQuery' => [
180 180
                         'type'    => new TestObjectType(),
181
-                        'resolve' => function () {
181
+                        'resolve' => function() {
182 182
                             return 'stringValue';
183 183
                         }
184 184
                     ],
185 185
                     'labels'            => [
186 186
                         'type'    => new ListType(new StringType()),
187
-                        'resolve' => function () {
187
+                        'resolve' => function() {
188 188
                             return ['one', 'two'];
189 189
                         }
190 190
                     ]
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
                ->addField(new Field([
216 216
                    'name'    => 'increaseCounter',
217 217
                    'type'    => new IntType(),
218
-                   'resolve' => function ($value, $args, ResolveInfo $info) {
218
+                   'resolve' => function($value, $args, ResolveInfo $info) {
219 219
                        return $this->_counter += $args['amount'];
220 220
                    },
221 221
                    'args'    => [
@@ -227,13 +227,13 @@  discard block
 block discarded – undo
227 227
                ]))->addField(new Field([
228 228
                 'name'    => 'invalidResolveTypeMutation',
229 229
                 'type'    => new NonNullType(new IntType()),
230
-                'resolve' => function () {
230
+                'resolve' => function() {
231 231
                     return null;
232 232
                 }
233 233
             ]))->addField(new Field([
234 234
                 'name'    => 'interfacedMutation',
235 235
                 'type'    => new TestInterfaceType(),
236
-                'resolve' => function () {
236
+                'resolve' => function() {
237 237
                     return ['name' => 'John'];
238 238
                 }
239 239
             ]));
@@ -279,43 +279,43 @@  discard block
 block discarded – undo
279 279
                 'fields' => [
280 280
                     'listQuery'                 => [
281 281
                         'type'    => new ListType(new TestEnumType()),
282
-                        'resolve' => function () {
282
+                        'resolve' => function() {
283 283
                             return 'invalid list';
284 284
                         }
285 285
                     ],
286 286
                     'listEnumQuery'             => [
287 287
                         'type'    => new ListType(new TestEnumType()),
288
-                        'resolve' => function () {
288
+                        'resolve' => function() {
289 289
                             return ['invalid enum'];
290 290
                         }
291 291
                     ],
292 292
                     'invalidEnumQuery'          => [
293 293
                         'type'    => new TestEnumType(),
294
-                        'resolve' => function () {
294
+                        'resolve' => function() {
295 295
                             return 'invalid enum';
296 296
                         }
297 297
                     ],
298 298
                     'enumQuery'                 => [
299 299
                         'type'    => new TestEnumType(),
300
-                        'resolve' => function () {
300
+                        'resolve' => function() {
301 301
                             return 1;
302 302
                         }
303 303
                     ],
304 304
                     'invalidNonNullQuery'       => [
305 305
                         'type'    => new NonNullType(new IntType()),
306
-                        'resolve' => function () {
306
+                        'resolve' => function() {
307 307
                             return null;
308 308
                         }
309 309
                     ],
310 310
                     'invalidNonNullInsideQuery' => [
311 311
                         'type'    => new NonNullType(new IntType()),
312
-                        'resolve' => function () {
312
+                        'resolve' => function() {
313 313
                             return 'hello';
314 314
                         }
315 315
                     ],
316 316
                     'objectQuery'               => [
317 317
                         'type'    => new TestObjectType(),
318
-                        'resolve' => function () {
318
+                        'resolve' => function() {
319 319
                             return ['name' => 'John'];
320 320
                         }
321 321
                     ],
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
                                 'enum'   => new TestEnumType(),
328 328
                             ],
329 329
                         ]),
330
-                        'resolve' => function () {
330
+                        'resolve' => function() {
331 331
                             return [
332 332
                                 'object' => [
333 333
                                     'name' => 'John'
@@ -396,10 +396,10 @@  discard block
 block discarded – undo
396 396
             ]
397 397
         ]);
398 398
 
399
-        $union        = new UnionType([
399
+        $union = new UnionType([
400 400
             'name'        => 'TestUnion',
401 401
             'types'       => [$object1, $object2],
402
-            'resolveType' => function ($object) use ($object1, $object2) {
402
+            'resolveType' => function($object) use ($object1, $object2) {
403 403
                 if (isset($object['id'])) {
404 404
                     return $object1;
405 405
                 }
@@ -410,11 +410,11 @@  discard block
 block discarded – undo
410 410
         $invalidUnion = new UnionType([
411 411
             'name'        => 'TestUnion',
412 412
             'types'       => [$object1, $object2],
413
-            'resolveType' => function ($object) use ($object3) {
413
+            'resolveType' => function($object) use ($object3) {
414 414
                 return $object3;
415 415
             }
416 416
         ]);
417
-        $processor    = new Processor(new Schema([
417
+        $processor = new Processor(new Schema([
418 418
             'query' => new ObjectType([
419 419
                 'name'   => 'RootQuery',
420 420
                 'fields' => [
@@ -424,7 +424,7 @@  discard block
 block discarded – undo
424 424
                             'type' => ['type' => 'string']
425 425
                         ],
426 426
                         'cost' => 10,
427
-                        'resolve' => function ($value, $args) {
427
+                        'resolve' => function($value, $args) {
428 428
                             if ($args['type'] == 'object1') {
429 429
                                 return [
430 430
                                     'id' => 43
@@ -438,7 +438,7 @@  discard block
 block discarded – undo
438 438
                     ],
439 439
                     'invalidUnion' => [
440 440
                         'type'    => $invalidUnion,
441
-                        'resolve' => function () {
441
+                        'resolve' => function() {
442 442
                             return ['name' => 'name resolved'];
443 443
                         }
444 444
                     ],
@@ -498,7 +498,7 @@  discard block
 block discarded – undo
498 498
                                               'args'    => [
499 499
                                                   'shorten' => new BooleanType()
500 500
                                               ],
501
-                                              'resolve' => function ($value, $args) {
501
+                                              'resolve' => function($value, $args) {
502 502
                                                 return empty($args['shorten']) ? $value : $value;
503 503
                                               }
504 504
                                           ],
@@ -507,18 +507,18 @@  discard block
 block discarded – undo
507 507
                                           'likes'     => [
508 508
                                               'type'    => new IntType(),
509 509
                                               'cost'    => 10,
510
-                                              'resolve' => function () {
510
+                                              'resolve' => function() {
511 511
                                                 return 42;
512 512
                                               }
513 513
                                           ]
514 514
                                       ]
515 515
                                   ]
516 516
                               ),
517
-                              'cost' => function ($args, $context, $childCost) {
517
+                              'cost' => function($args, $context, $childCost) {
518 518
                                 $argsCost = isset($args['cost']) ? $args['cost'] : 1;
519 519
                                 return 1 + $argsCost * $childCost;
520 520
                               },
521
-                              'resolve' => function ($value, $args) {
521
+                              'resolve' => function($value, $args) {
522 522
                                 $data = ['firstName' => 'John', 'code' => '007'];
523 523
 
524 524
                                 return $data;
@@ -549,7 +549,7 @@  discard block
 block discarded – undo
549 549
       $processor->processPayload('{ me { badfield } }');
550 550
       $this->assertArraySubset(['errors' => [['message' => 'Field "badfield" not found in type "User"']]], $processor->getResponseData());
551 551
 
552
-      foreach (range(1,5) as $cost_multiplier) {
552
+      foreach (range(1, 5) as $cost_multiplier) {
553 553
         $visitor = new \Youshido\GraphQL\Execution\Visitor\MaxComplexityQueryVisitor(1000); // arbitrarily high cost
554 554
         $processor->processPayload("{ me (cost: $cost_multiplier) { firstName, lastName, code, likes } }", ['cost' => $cost_multiplier], [$visitor]);
555 555
         $expected = 1 + 13 * (1 + $cost_multiplier);
Please login to merge, or discard this patch.
Indentation   +76 added lines, -76 removed lines patch added patch discarded remove patch
@@ -212,19 +212,19 @@  discard block
 block discarded – undo
212 212
         $this->assertEquals(['data' => ['labels' => ['one', 'two']]], $processor->getResponseData());
213 213
 
214 214
         $schema->getMutationType()
215
-               ->addField(new Field([
216
-                   'name'    => 'increaseCounter',
217
-                   'type'    => new IntType(),
218
-                   'resolve' => function ($value, $args, ResolveInfo $info) {
219
-                       return $this->_counter += $args['amount'];
220
-                   },
221
-                   'args'    => [
222
-                       'amount' => [
223
-                           'type'    => new IntType(),
224
-                           'default' => 1
225
-                       ]
226
-                   ]
227
-               ]))->addField(new Field([
215
+                ->addField(new Field([
216
+                    'name'    => 'increaseCounter',
217
+                    'type'    => new IntType(),
218
+                    'resolve' => function ($value, $args, ResolveInfo $info) {
219
+                        return $this->_counter += $args['amount'];
220
+                    },
221
+                    'args'    => [
222
+                        'amount' => [
223
+                            'type'    => new IntType(),
224
+                            'default' => 1
225
+                        ]
226
+                    ]
227
+                ]))->addField(new Field([
228 228
                 'name'    => 'invalidResolveTypeMutation',
229 229
                 'type'    => new NonNullType(new IntType()),
230 230
                 'resolve' => function () {
@@ -482,82 +482,82 @@  discard block
 block discarded – undo
482 482
     }
483 483
 
484 484
     public function testComplexityReducer() {
485
-      $schema = new Schema(
486
-          [
487
-              'query' => new ObjectType(
488
-                  [
489
-                      'name'   => 'RootQuery',
490
-                      'fields' => [
491
-                          'me' => [
492
-                              'type'    => new ObjectType(
493
-                                  [
494
-                                      'name'   => 'User',
495
-                                      'fields' => [
496
-                                          'firstName' => [
497
-                                              'type'    => new StringType(),
498
-                                              'args'    => [
499
-                                                  'shorten' => new BooleanType()
500
-                                              ],
501
-                                              'resolve' => function ($value, $args) {
485
+        $schema = new Schema(
486
+            [
487
+                'query' => new ObjectType(
488
+                    [
489
+                        'name'   => 'RootQuery',
490
+                        'fields' => [
491
+                            'me' => [
492
+                                'type'    => new ObjectType(
493
+                                    [
494
+                                        'name'   => 'User',
495
+                                        'fields' => [
496
+                                            'firstName' => [
497
+                                                'type'    => new StringType(),
498
+                                                'args'    => [
499
+                                                    'shorten' => new BooleanType()
500
+                                                ],
501
+                                                'resolve' => function ($value, $args) {
502 502
                                                 return empty($args['shorten']) ? $value : $value;
503
-                                              }
504
-                                          ],
505
-                                          'lastName'  => new StringType(),
506
-                                          'code'      => new StringType(),
507
-                                          'likes'     => [
508
-                                              'type'    => new IntType(),
509
-                                              'cost'    => 10,
510
-                                              'resolve' => function () {
503
+                                                }
504
+                                            ],
505
+                                            'lastName'  => new StringType(),
506
+                                            'code'      => new StringType(),
507
+                                            'likes'     => [
508
+                                                'type'    => new IntType(),
509
+                                                'cost'    => 10,
510
+                                                'resolve' => function () {
511 511
                                                 return 42;
512
-                                              }
513
-                                          ]
514
-                                      ]
515
-                                  ]
516
-                              ),
517
-                              'cost' => function ($args, $context, $childCost) {
512
+                                                }
513
+                                            ]
514
+                                        ]
515
+                                    ]
516
+                                ),
517
+                                'cost' => function ($args, $context, $childCost) {
518 518
                                 $argsCost = isset($args['cost']) ? $args['cost'] : 1;
519 519
                                 return 1 + $argsCost * $childCost;
520
-                              },
521
-                              'resolve' => function ($value, $args) {
520
+                                },
521
+                                'resolve' => function ($value, $args) {
522 522
                                 $data = ['firstName' => 'John', 'code' => '007'];
523 523
 
524 524
                                 return $data;
525
-                              },
526
-                              'args'    => [
527
-                                  'cost' => [
528
-                                      'type'    => new IntType(),
529
-                                      'default' => 1
530
-                                  ]
531
-                              ]
532
-                          ]
533
-                      ]
534
-                  ]
535
-              )
536
-          ]
537
-      );
538
-      $processor = new Processor($schema);
539
-
540
-      $processor->setMaxComplexity(10);
541
-
542
-      $processor->processPayload('{ me { firstName, lastName } }');
543
-      $this->assertArrayNotHasKey('error', $processor->getResponseData());
544
-
545
-      $processor->processPayload('{ me { firstName, likes } }');
546
-      $this->assertEquals(['errors' => [['message' => 'query exceeded max allowed complexity of 10']]], $processor->getResponseData());
547
-
548
-      // don't let complexity reducer affect query errors
549
-      $processor->processPayload('{ me { badfield } }');
550
-      $this->assertArraySubset(['errors' => [['message' => 'Field "badfield" is not found in type "User"']]], $processor->getResponseData());
525
+                                },
526
+                                'args'    => [
527
+                                    'cost' => [
528
+                                        'type'    => new IntType(),
529
+                                        'default' => 1
530
+                                    ]
531
+                                ]
532
+                            ]
533
+                        ]
534
+                    ]
535
+                )
536
+            ]
537
+        );
538
+        $processor = new Processor($schema);
551 539
 
552
-      foreach (range(1,5) as $cost_multiplier) {
540
+        $processor->setMaxComplexity(10);
541
+
542
+        $processor->processPayload('{ me { firstName, lastName } }');
543
+        $this->assertArrayNotHasKey('error', $processor->getResponseData());
544
+
545
+        $processor->processPayload('{ me { firstName, likes } }');
546
+        $this->assertEquals(['errors' => [['message' => 'query exceeded max allowed complexity of 10']]], $processor->getResponseData());
547
+
548
+        // don't let complexity reducer affect query errors
549
+        $processor->processPayload('{ me { badfield } }');
550
+        $this->assertArraySubset(['errors' => [['message' => 'Field "badfield" is not found in type "User"']]], $processor->getResponseData());
551
+
552
+        foreach (range(1,5) as $cost_multiplier) {
553 553
         $visitor = new \Youshido\GraphQL\Execution\Visitor\MaxComplexityQueryVisitor(1000); // arbitrarily high cost
554 554
         $processor->processPayload("{ me (cost: $cost_multiplier) { firstName, lastName, code, likes } }", ['cost' => $cost_multiplier], [$visitor]);
555 555
         $expected = 1 + 13 * (1 + $cost_multiplier);
556 556
         $this->assertEquals($expected, $visitor->getMemo());
557
-      }
557
+        }
558 558
 
559
-      // TODO, variables not yet supported
560
-      /*$query = 'query costQuery ($cost: Int) { me (cost: $cost) { firstName, lastName, code, likes } }';
559
+        // TODO, variables not yet supported
560
+        /*$query = 'query costQuery ($cost: Int) { me (cost: $cost) { firstName, lastName, code, likes } }';
561 561
       foreach (range(1,5) as $cost_multiplier) {
562 562
         $visitor = new \Youshido\GraphQL\Execution\Visitor\MaxComplexityQueryVisitor(1000); // arbitrarily high cost
563 563
         $processor->processPayload($query, ['cost' => $cost_multiplier], [$visitor]);
Please login to merge, or discard this patch.
src/Execution/Visitor/AbstractQueryVisitor.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -29,38 +29,38 @@
 block discarded – undo
29 29
 
30 30
 abstract class AbstractQueryVisitor {
31 31
 
32
-  /**
33
-   * @var int initial value of $this->memo
34
-   */
35
-  protected $initialValue = 0;
32
+    /**
33
+     * @var int initial value of $this->memo
34
+     */
35
+    protected $initialValue = 0;
36 36
 
37
-  /**
38
-   * @var mixed the accumulator
39
-   */
40
-  protected $memo;
37
+    /**
38
+     * @var mixed the accumulator
39
+     */
40
+    protected $memo;
41 41
 
42
-  /**
43
-   * AbstractQueryVisitor constructor.
44
-   */
45
-  public function __construct() {
42
+    /**
43
+     * AbstractQueryVisitor constructor.
44
+     */
45
+    public function __construct() {
46 46
     $this->memo = $this->initialValue;
47
-  }
47
+    }
48 48
 
49
-  /**
50
-   * @return mixed getter for the memo, in case callers want to inspect it after a process run
51
-   */
52
-  public function getMemo() {
49
+    /**
50
+     * @return mixed getter for the memo, in case callers want to inspect it after a process run
51
+     */
52
+    public function getMemo() {
53 53
     return $this->memo;
54
-  }
54
+    }
55 55
 
56
-  /**
57
-   * Visit a query node.  See class docstring.
58
-   *
59
-   * @param array       $args
60
-   * @param FieldConfig $fieldConfig
61
-   * @param int         $childScore
62
-   *
63
-   * @return int|null
64
-   */
65
-  abstract public function visit(array $args, FieldConfig $fieldConfig, $childScore = 0);
56
+    /**
57
+     * Visit a query node.  See class docstring.
58
+     *
59
+     * @param array       $args
60
+     * @param FieldConfig $fieldConfig
61
+     * @param int         $childScore
62
+     *
63
+     * @return int|null
64
+     */
65
+    abstract public function visit(array $args, FieldConfig $fieldConfig, $childScore = 0);
66 66
 }
67 67
\ No newline at end of file
Please login to merge, or discard this patch.
Tests/Performance/LoadTest.php 1 patch
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -43,12 +43,12 @@  discard block
 block discarded – undo
43 43
             $authors = [];
44 44
             while (count($authors) < rand(1, 4)) {
45 45
                 $authors[] = [
46
-                    'name' => 'Author ' . substr(md5(time()), 0, 4)
46
+                    'name' => 'Author '.substr(md5(time()), 0, 4)
47 47
                 ];
48 48
             }
49 49
             $data[] = [
50 50
                 'id'      => $i,
51
-                'title'   => 'Title of ' . $i,
51
+                'title'   => 'Title of '.$i,
52 52
                 'authors' => $authors,
53 53
             ];
54 54
         }
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
 //        return true;
70 70
         $p->processPayload('{ posts { id, title, authors { name } } }');
71 71
         $res = $p->getResponseData();
72
-        echo "Count: " . count($res['data']['posts']) . "\n";
72
+        echo "Count: ".count($res['data']['posts'])."\n";
73 73
         printf("Test Time: %04f\n", microtime(true) - $time);
74 74
 //        $p->getResponseData();
75 75
     }
Please login to merge, or discard this patch.