-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathFieldBuilderTest.php
More file actions
58 lines (47 loc) · 2.11 KB
/
FieldBuilderTest.php
File metadata and controls
58 lines (47 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
declare(strict_types=1);
namespace SimPod\GraphQLUtils\Tests\Builder;
use GraphQL\Type\Definition\ResolveInfo;
use GraphQL\Type\Definition\Type;
use PHPUnit\Framework\TestCase;
use ReflectionClass;
use SimPod\GraphQLUtils\Builder\FieldBuilder;
use SimPod\GraphQLUtils\Tests\Builder\fixture\Fields;
final class FieldBuilderTest extends TestCase
{
public function testCreate(): void
{
$field = FieldBuilder::create('SomeField', Type::string())
->setDeprecationReason('Deprecated')
->setDescription('SomeDescription')
->setResolver(static fn (): string => 'Resolver result')
->addArgument('arg1', Type::int(), 'Argument Description', 1, 'Reason')
->build();
self::assertSame('SomeField', $field['name']);
self::assertArrayHasKey('deprecationReason', $field);
self::assertSame('Deprecated', $field['deprecationReason']);
self::assertArrayHasKey('description', $field);
self::assertSame('SomeDescription', $field['description']);
self::assertArrayHasKey('resolve', $field);
self::assertIsCallable($field['resolve']);
$resolveInfoReflection = new ReflectionClass(ResolveInfo::class);
$resolveInfo = $resolveInfoReflection->newInstanceWithoutConstructor();
self::assertSame('Resolver result', $field['resolve'](null, [], null, $resolveInfo));
self::assertArrayHasKey('args', $field);
self::assertIsArray($field['args']);
self::assertCount(1, $field['args']);
$args = $field['args'];
self::assertArrayHasKey('arg1', $args);
self::assertIsArray($args['arg1']);
self::assertSame(Type::int(), $args['arg1']['type']);
self::assertSame('Argument Description', $args['arg1']['description']);
self::assertSame('Reason', $args['arg1']['deprecationReason']);
self::assertSame(1, $args['arg1']['defaultValue']);
}
public function testCreateFromEnum(): void
{
$field = FieldBuilder::create(Fields::Field1, Type::string())
->build();
self::assertSame('Field1', $field['name']);
}
}