Completed
Push — master ( 5bf303...8cd23b )
by Portey
03:14
created

StarWarsTest::testInvalidVariableType()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 22
rs 9.2
cc 1
eloc 9
nc 1
nop 0
1
<?php
2
/**
3
 * Date: 07.12.15
4
 *
5
 * @author Portey Vasil <[email protected]>
6
 */
7
8
namespace Youshido\Tests\StarWars;
9
10
11
use Youshido\GraphQL\Processor;
12
use Youshido\GraphQL\Validator\ResolveValidator\ResolveValidator;
13
use Youshido\Tests\StarWars\Schema\Schema;
14
15
class StarWarsTest extends \PHPUnit_Framework_TestCase
16
{
17
18
    /**
19
     * @param $query
20
     * @param $validResult
21
     * @param $variables
22
     *
23
     * @dataProvider dataProvider
24
     */
25
    public function testSchema($query, $validResult, $variables)
26
    {
27
        $processor = new Processor(new ResolveValidator());
28
        $processor->setSchema(new Schema());
29
30
        $processor->processQuery($query, $variables);
31
32
        $this->assertEquals($processor->getResponseData(), $validResult);
33
    }
34
35
    public function testInvalidVariableType()
36
    {
37
        $processor = new Processor(new ResolveValidator());
38
        $processor->setSchema(new Schema());
39
40
        $processor->processQuery(
41
            'query($someId: Int){
42
                human(id: $someId) {
43
                    name
44
                }
45
            }'
46
        );
47
48
        $data = $processor->getResponseData();
49
        $this->assertEquals($data, [
50
            'errors' => [
51
                [
52
                    'message' => 'Invalid variable "someId" type, allowed type is "Id"'
53
                ]
54
            ]
55
        ]);
56
    }
57
58
59
    public function dataProvider()
60
    {
61
        return [
62
            [
63
                'query CheckTypeOfLuke {
64
                  hero(episode: EMPIRE) {
65
                    __typename,
66
                    name
67
                  }
68
                }',
69
                [
70
                    'data' => [
71
                        'hero' => [
72
                            '__typename' => 'Human',
73
                            'name'       => 'Luke Skywalker'
74
                        ],
75
                    ]
76
                ],
77
                []
78
            ],
79
            [
80
                'query {
81
                  hero {
82
                    name
83
                  }
84
              }',
85
                ['data' => [
86
                    'hero' => [
87
                        'name' => 'R2-D2'
88
                    ]
89
                ]],
90
                []
91
            ],
92
            [
93
                'query {
94
                  hero {
95
                    id,
96
                    name,
97
                    friends {
98
                      name
99
                    }
100
                  }
101
                }',
102
                ['data' => [
103
                    'hero' => [
104
                        'id'      => '2001',
105
                        'name'    => 'R2-D2',
106
                        'friends' => [
107
                            [
108
                                'name' => 'Luke Skywalker',
109
                            ],
110
                            [
111
                                'name' => 'Han Solo',
112
                            ],
113
                            [
114
                                'name' => 'Leia Organa',
115
                            ],
116
                        ]
117
                    ]
118
                ]],
119
                []
120
            ],
121
            [
122
                '{
123
                  hero {
124
                    name,
125
                    friends {
126
                      name,
127
                      appearsIn,
128
                      friends {
129
                        name
130
                      }
131
                    }
132
                  }
133
                }',
134
                [
135
                    'data' => [
136
                        'hero' => [
137
                            'name'    => 'R2-D2',
138
                            'friends' => [
139
                                [
140
                                    'name'      => 'Luke Skywalker',
141
                                    'appearsIn' => ['NEWHOPE', 'EMPIRE', 'JEDI',],
142
                                    'friends'   => [
143
                                        ['name' => 'Han Solo',],
144
                                        ['name' => 'Leia Organa',],
145
                                        ['name' => 'C-3PO',],
146
                                        ['name' => 'R2-D2',],
147
                                    ],
148
                                ],
149
                                [
150
                                    'name'      => 'Han Solo',
151
                                    'appearsIn' => ['NEWHOPE', 'EMPIRE', 'JEDI'],
152
                                    'friends'   => [
153
                                        ['name' => 'Luke Skywalker',],
154
                                        ['name' => 'Leia Organa'],
155
                                        ['name' => 'R2-D2',],
156
                                    ]
157
                                ],
158
                                [
159
                                    'name'      => 'Leia Organa',
160
                                    'appearsIn' => ['NEWHOPE', 'EMPIRE', 'JEDI'],
161
                                    'friends'   =>
162
                                        [
163
                                            ['name' => 'Luke Skywalker',],
164
                                            ['name' => 'Han Solo',],
165
                                            ['name' => 'C-3PO',],
166
                                            ['name' => 'R2-D2',],
167
                                        ],
168
                                ],
169
                            ],
170
                        ]
171
                    ]
172
                ],
173
                []
174
            ],
175
            [
176
                '{
177
                  human(id: "1000") {
178
                    name
179
                  }
180
                }',
181
                [
182
                    'data' => [
183
                        'human' => [
184
                            'name' => 'Luke Skywalker'
185
                        ]
186
                    ]
187
                ],
188
                []
189
            ],
190
            [
191
                'query($someId: Id){
192
                  human(id: $someId) {
193
                    name
194
                  }
195
                }',
196
                [
197
                    'data' => [
198
                        'human' => [
199
                            'name' => 'Luke Skywalker'
200
                        ]
201
                    ]
202
                ],
203
                [
204
                    'someId' => '1000'
205
                ]
206
            ]
207
        ];
208
    }
209
}
210