RequestProcessorTest::setUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

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