Passed
Pull Request — master (#69)
by Christoffer
02:29
created

ComparisonContext   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 86
rs 10
c 0
b 0
f 0
wmc 8

7 Methods

Rating   Name   Duplication   Size   Complexity  
A registerField() 0 11 2
A reportConflict() 0 5 1
A getFieldMap() 0 3 1
A getFragmentNames() 0 3 1
A registerFragment() 0 5 1
A hasConflicts() 0 3 1
A getConflicts() 0 3 1
1
<?php
2
3
namespace Digia\GraphQL\Validation\Conflict;
4
5
use Digia\GraphQL\Language\Node\FragmentDefinitionNode;
6
use Digia\GraphQL\Language\Node\FragmentSpreadNode;
7
use Digia\GraphQL\Language\Node\NodeInterface;
8
9
class ComparisonContext
10
{
11
    /**
12
     * @var array
13
     */
14
    protected $fieldMap = [];
15
16
    /**
17
     * @var array
18
     */
19
    protected $fragmentNames = [];
20
21
    /**
22
     * @var array|Conflict[]
23
     */
24
    protected $conflicts = [];
25
26
    /**
27
     * @param FieldContext $field
28
     * @return $this
29
     */
30
    public function registerField(FieldContext $field)
31
    {
32
        $responseName = $field->getNode()->getAliasOrNameValue();
33
34
        if (!isset($this->fieldMap[$responseName])) {
35
            $this->fieldMap[$responseName] = [];
36
        }
37
38
        $this->fieldMap[$responseName][] = $field;
39
40
        return $this;
41
    }
42
43
    /**
44
     * @param NodeInterface|FragmentSpreadNode|FragmentDefinitionNode $fragment
45
     * @return $this
46
     */
47
    public function registerFragment(NodeInterface $fragment)
48
    {
49
        $this->fragmentNames[] = $fragment->getNameValue();
0 ignored issues
show
Bug introduced by
The method getNameValue() does not exist on Digia\GraphQL\Language\Node\NodeInterface. It seems like you code against a sub-type of Digia\GraphQL\Language\Node\NodeInterface such as Digia\GraphQL\Language\Node\DirectiveNode or Digia\GraphQL\Language\Node\FragmentSpreadNode or Digia\GraphQL\Language\Node\ArgumentNode or Digia\GraphQL\Language\Node\ObjectFieldNode or Digia\GraphQL\Language\Node\FieldNode or Digia\GraphQL\Language\N...DefinitionNodeInterface or Digia\GraphQL\Language\Node\VariableDefinitionNode or Digia\GraphQL\Language\Node\EnumTypeDefinitionNode or Digia\GraphQL\Language\N...DefinitionNodeInterface or Digia\GraphQL\Language\N...EnumValueDefinitionNode or Digia\GraphQL\Language\N...DirectiveDefinitionNode or Digia\GraphQL\Language\N...nputValueDefinitionNode or Digia\GraphQL\Language\Node\FieldDefinitionNode or Digia\GraphQL\Language\Node\VariableNode or Digia\GraphQL\Language\Node\NamedTypeNode or Digia\GraphQL\Language\N...ObjectTypeExtensionNode or Digia\GraphQL\Language\N...ScalarTypeExtensionNode or Digia\GraphQL\Language\Node\EnumTypeExtensionNode or Digia\GraphQL\Language\N...ObjectTypeExtensionNode or Digia\GraphQL\Language\N...erfaceTypeExtensionNode or Digia\GraphQL\Language\Node\UnionTypeExtensionNode. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

49
        /** @scrutinizer ignore-call */ 
50
        $this->fragmentNames[] = $fragment->getNameValue();
Loading history...
50
51
        return $this;
52
    }
53
54
    /**
55
     * @param Conflict $conflict
56
     * @return $this
57
     */
58
    public function reportConflict(Conflict $conflict)
59
    {
60
        $this->conflicts[] = $conflict;
61
62
        return $this;
63
    }
64
65
    /**
66
     * @return array
67
     */
68
    public function getFieldMap(): array
69
    {
70
        return $this->fieldMap;
71
    }
72
73
    /**
74
     * @return array
75
     */
76
    public function getFragmentNames(): array
77
    {
78
        return $this->fragmentNames;
79
    }
80
81
    /**
82
     * @return bool
83
     */
84
    public function hasConflicts(): bool
85
    {
86
        return !empty($this->conflicts);
87
    }
88
89
    /**
90
     * @return array|Conflict[]
91
     */
92
    public function getConflicts()
93
    {
94
        return $this->conflicts;
95
    }
96
}
97