Completed
Push — master ( 7d44d2...620869 )
by Tomáš
04:35
created

RequestProcessorTest::testProcess()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
cc 1
eloc 15
nc 1
nop 0
1
<?php declare(strict_types=1);
2
3
namespace Portiny\GraphQL\Tests\GraphQL;
4
5
use Nette\Http\Request;
6
use Nette\Http\UrlScript;
7
use Portiny\GraphQL\Contract\Http\Request\RequestParserInterface;
8
use Portiny\GraphQL\GraphQL\RequestProcessor;
9
use Portiny\GraphQL\Http\Request\JsonRequestParser;
10
use Portiny\GraphQL\Provider\MutationFieldsProvider;
11
use Portiny\GraphQL\Provider\QueryFieldsProvider;
12
use Portiny\GraphQL\Tests\AbstractContainerTestCase;
13
use Portiny\GraphQL\Tests\Source\Provider\SomeMutationField;
14
use Portiny\GraphQL\Tests\Source\Provider\SomeQueryField;
15
16
final class RequestProcessorTest extends AbstractContainerTestCase
17
{
18
	/**
19
	 * {@inheritdoc}
20
	 */
21
	protected function setUp(): void
22
	{
23
		parent::setUp();
24
	}
25
26
	public function testProcess(): void
27
	{
28
		// test query
29
		$rawData = '{"query": "query Test($someArg: String) {'
30
			. 'someQueryName(someArg: $someArg)}", "variables": {"someArg": "someValue"}}';
31
32
		$requestParser = $this->createRequestParser($rawData);
33
		$output = $this->createRequestFactory()
34
			->process($requestParser);
35
36
		$this->assertTrue(is_array($output));
37
		$this->assertSame('resolved someValue', $output['data']['someQueryName']);
38
39
		// test mutation
40
		$rawData = '{"query": "mutation Test($someArg: String) {'
41
			. 'someMutationName(someArg: $someArg)}", "variables": {"someArg": "someValue"}}';
42
		$requestParser = $this->createRequestParser($rawData);
43
44
		$output = $this->createRequestFactory()
45
			->process($requestParser);
46
47
		$this->assertTrue(is_array($output));
48
		$this->assertSame('someValue resolved', $output['data']['someMutationName']);
49
	}
50
51
	private function createRequestFactory(): RequestProcessor
52
	{
53
		$queryField = new SomeQueryField();
54
		$queryFieldProvider = new QueryFieldsProvider();
55
		$queryFieldProvider->addField($queryField);
56
57
		$mutationField = new SomeMutationField();
58
		$mutationFieldProvider = new MutationFieldsProvider();
59
		$mutationFieldProvider->addField($mutationField);
60
61
		$requestProcessor = new RequestProcessor();
62
		$requestProcessor->setQueryFieldsProvider($queryFieldProvider);
63
		$requestProcessor->setMutationFieldsProvider($mutationFieldProvider);
64
65
		return $requestProcessor;
66
	}
67
68
	private function createRequestParser(string $rawData): RequestParserInterface
69
	{
70
		$url = new UrlScript('https://portiny.org');
71
		$httpRequest = new Request($url, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, function () use ($rawData) {
72
			return $rawData;
73
		});
74
75
		return new JsonRequestParser($httpRequest);
76
	}
77
}
78