-
Notifications
You must be signed in to change notification settings - Fork 101
/
Copy pathInputTypeUtilsTest.php
88 lines (71 loc) · 3.14 KB
/
InputTypeUtilsTest.php
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
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
namespace TheCodingMachine\GraphQLite;
use PHPUnit\Runner\Version;
use ReflectionMethod;
use TheCodingMachine\GraphQLite\Fixtures\TestObject;
use TheCodingMachine\GraphQLite\Parameters\ExpandsInputTypeParameters;
use TheCodingMachine\GraphQLite\Parameters\InputTypeParameterInterface;
use TheCodingMachine\GraphQLite\Parameters\ParameterInterface;
use TheCodingMachine\GraphQLite\Parameters\SourceParameter;
class InputTypeUtilsTest extends AbstractQueryProvider
{
public function testNoReturnType(): void
{
$inputTypeGenerator = $this->getInputTypeUtils();
$this->expectException(MissingTypeHintRuntimeException::class);
$this->expectExceptionMessage('Factory "TheCodingMachine\\GraphQLite\\InputTypeUtilsTest::factoryNoReturnType" must have a return type.');
$inputTypeGenerator->getInputTypeNameAndClassName(new ReflectionMethod($this, 'factoryNoReturnType'));
}
public function testInvalidReturnType(): void
{
$inputTypeGenerator = $this->getInputTypeUtils();
$this->expectException(MissingTypeHintRuntimeException::class);
$this->expectExceptionMessage('The return type of factory "TheCodingMachine\\GraphQLite\\InputTypeUtilsTest::factoryStringReturnType" must be an object, "string" passed instead.');
$inputTypeGenerator->getInputTypeNameAndClassName(new ReflectionMethod($this, 'factoryStringReturnType'));
}
public function testNullableReturnType(): void
{
$inputTypeGenerator = $this->getInputTypeUtils();
$this->expectException(MissingTypeHintRuntimeException::class);
$this->expectExceptionMessage('Factory "TheCodingMachine\\GraphQLite\\InputTypeUtilsTest::factoryNullableReturnType" must have a non nullable return type.');
$inputTypeGenerator->getInputTypeNameAndClassName(new ReflectionMethod($this, 'factoryNullableReturnType'));
}
public function testToInputParameters(): void
{
if (Version::series() === '8.5') {
$this->markTestSkipped('Broken on PHPUnit 8.');
}
self::assertSame([], InputTypeUtils::toInputParameters([]));
self::assertSame([
'second' => $second = $this->createStub(InputTypeParameterInterface::class),
'third' => $third = $this->createStub(InputTypeParameterInterface::class),
], InputTypeUtils::toInputParameters([
'first' => new class ($second) implements ExpandsInputTypeParameters {
public function __construct(
private readonly ParameterInterface $second,
)
{
}
public function toInputTypeParameters(): array
{
return [
'second' => $this->second,
];
}
},
'third' => $third,
'fourth' => $this->createStub(ParameterInterface::class),
]));
}
public function factoryNoReturnType()
{
}
public function factoryStringReturnType(): string
{
return '';
}
public function factoryNullableReturnType(): ?TestObject
{
return null;
}
}