-
-
Notifications
You must be signed in to change notification settings - Fork 575
Expand file tree
/
Copy pathNodeTest.php
More file actions
75 lines (61 loc) · 2.26 KB
/
NodeTest.php
File metadata and controls
75 lines (61 loc) · 2.26 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php declare(strict_types=1);
namespace GraphQL\Tests\Language\AST;
use GraphQL\Language\AST\NamedTypeNode;
use GraphQL\Language\AST\NameNode;
use GraphQL\Language\AST\NonNullTypeNode;
use GraphQL\Language\Parser;
use GraphQL\Utils\AST;
use PHPUnit\Framework\TestCase;
use function Safe\json_encode;
final class NodeTest extends TestCase
{
public function testCloneDeep(): void
{
$node = Parser::objectTypeDefinition('
type Test {
id(arg: Int): ID!
}
');
$clone = $node->cloneDeep();
self::assertNotSameButEquals($node, $clone);
self::assertNotSameButEquals($node->name, $clone->name);
self::assertNotSameButEquals($node->directives, $clone->directives);
$nodeFields = $node->fields;
$cloneFields = $clone->fields;
self::assertNotSameButEquals($nodeFields, $cloneFields);
$nodeId = $nodeFields->get(0);
$cloneId = $cloneFields->get(0);
self::assertNotSameButEquals($nodeId, $cloneId);
$nodeIdArgs = $nodeId->arguments;
$cloneIdArgs = $cloneId->arguments;
self::assertNotSameButEquals($nodeIdArgs, $cloneIdArgs);
$nodeArg = $nodeIdArgs->get(0);
$cloneArg = $cloneIdArgs->get(0);
self::assertNotSameButEquals($nodeArg, $cloneArg);
self::assertSame($node->loc, $clone->loc);
}
private static function assertNotSameButEquals(object $node, object $clone): void
{
self::assertNotSame($node, $clone);
self::assertEquals($node, $clone);
}
public function testJsonSerialize(): void
{
$json = /** @lang JSON */ '{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Foo"}}}';
$node = new NonNullTypeNode([
'type' => new NamedTypeNode([
'name' => new NameNode(['value' => 'Foo']),
]),
]);
self::assertJsonStringEqualsJsonString($json, json_encode($node));
self::assertEquals($node, AST::fromArray(\json_decode($json, true)));
}
public function testToString(): void
{
self::assertJsonStringEqualsJsonString(
/** @lang JSON */
'{"kind":"Name","value":"foo"}',
(string) new NameNode(['value' => 'foo'])
);
}
}