| @@ 209-242 (lines=34) @@ | ||
| 206 | /** |
|
| 207 | * Test a simple single deferred field. |
|
| 208 | */ |
|
| 209 | public function testSingleResolve() |
|
| 210 | { |
|
| 211 | $query = 'query { |
|
| 212 | users(ids: ["a", "b"]) { |
|
| 213 | name |
|
| 214 | } |
|
| 215 | }'; |
|
| 216 | $database = $this->prophesize(DeferredDatabase::class); |
|
| 217 | ||
| 218 | $database->query(['a', 'b'])->willReturn( |
|
| 219 | [ |
|
| 220 | 'a' => ['id' => 'a', 'name' => 'User A'], |
|
| 221 | 'b' => ['id' => 'b', 'name' => 'User B'], |
|
| 222 | ] |
|
| 223 | )->shouldBeCalledTimes(1); |
|
| 224 | ||
| 225 | $result = $this->query( |
|
| 226 | $query, |
|
| 227 | new DeferredQueryBuffer($database->reveal()) |
|
| 228 | ); |
|
| 229 | ||
| 230 | $database->checkProphecyMethodsPredictions(); |
|
| 231 | ||
| 232 | $this->assertEquals( |
|
| 233 | [ |
|
| 234 | 'users' => [ |
|
| 235 | ['name' => 'User A'], |
|
| 236 | ['name' => 'User B'], |
|
| 237 | ], |
|
| 238 | ], |
|
| 239 | $result['data'], |
|
| 240 | 'Retrieved correct data.' |
|
| 241 | ); |
|
| 242 | } |
|
| 243 | ||
| 244 | /** |
|
| 245 | * Test if multiple calls to the same field result in a single query. |
|
| @@ 247-288 (lines=42) @@ | ||
| 244 | /** |
|
| 245 | * Test if multiple calls to the same field result in a single query. |
|
| 246 | */ |
|
| 247 | public function testMultiResolve() |
|
| 248 | { |
|
| 249 | ||
| 250 | $query = 'query { |
|
| 251 | a:users(ids: ["a"]) { |
|
| 252 | name |
|
| 253 | } |
|
| 254 | b:users(ids: ["b"]) { |
|
| 255 | name |
|
| 256 | } |
|
| 257 | }'; |
|
| 258 | ||
| 259 | $database = $this->prophesize(DeferredDatabase::class); |
|
| 260 | ||
| 261 | $database->query(['a', 'b'])->willReturn( |
|
| 262 | [ |
|
| 263 | 'a' => ['id' => 'a', 'name' => 'User A'], |
|
| 264 | 'b' => ['id' => 'b', 'name' => 'User B'], |
|
| 265 | ] |
|
| 266 | )->shouldBeCalledTimes(1); |
|
| 267 | ||
| 268 | $result = $this->query( |
|
| 269 | $query, |
|
| 270 | new DeferredQueryBuffer($database->reveal()) |
|
| 271 | ); |
|
| 272 | ||
| 273 | $database->checkProphecyMethodsPredictions(); |
|
| 274 | ||
| 275 | $this->assertEquals( |
|
| 276 | [ |
|
| 277 | 'a' => [ |
|
| 278 | ['name' => 'User A'], |
|
| 279 | ], |
|
| 280 | 'b' => [ |
|
| 281 | ['name' => 'User B'], |
|
| 282 | ], |
|
| 283 | ], |
|
| 284 | $result['data'], |
|
| 285 | 'Retrieved correct data.' |
|
| 286 | ); |
|
| 287 | ||
| 288 | } |
|
| 289 | ||
| 290 | /** |
|
| 291 | * Test if recursive deferred resolvers work properly. |
|