4
4
5
5
namespace SimPod \GraphQLUtils \Tests \Builder ;
6
6
7
+ use GraphQL \Type \Definition \InterfaceType ;
8
+ use GraphQL \Type \Definition \ResolveInfo ;
7
9
use GraphQL \Type \Definition \Type ;
8
10
use PHPUnit \Framework \TestCase ;
11
+ use ReflectionClass ;
9
12
use SimPod \GraphQLUtils \Builder \EnumBuilder ;
10
13
use SimPod \GraphQLUtils \Builder \FieldBuilder ;
11
14
use SimPod \GraphQLUtils \Builder \InterfaceBuilder ;
@@ -15,37 +18,45 @@ final class InterfaceBuilderTest extends TestCase
15
18
{
16
19
public function testCreate (): void
17
20
{
18
- $ name = 'InterfaceA ' ;
19
-
20
- $ builder = InterfaceBuilder::create ($ name );
21
+ $ name = 'InterfaceA ' ;
21
22
$ description = 'Description ' ;
22
- $ interface = $ builder
23
+
24
+ $ interfaceA = new class () extends InterfaceType {
25
+ public function __construct ()
26
+ {
27
+ $ builder = InterfaceBuilder::create ('InterfaceA ' );
28
+ parent ::__construct ($ builder ->build ());
29
+ }
30
+ };
31
+
32
+ $ interface = InterfaceBuilder::create ($ name )
33
+ ->addInterface ($ interfaceA )
23
34
->setDescription ($ description )
24
35
->setFields (
25
36
[
26
37
FieldBuilder::create ('SomeField ' , Type::string ())->build (),
27
38
]
28
39
)
29
40
->setResolveType (
30
- static function (bool $ value ): Type {
31
- if ($ value ) {
32
- return Type::string ();
33
- }
34
-
35
- return Type::int ();
36
- }
41
+ static fn (bool $ value ): Type => $ value ? Type::string () : Type::int ()
37
42
)
38
43
->build ();
39
44
45
+ $ resolveInfoReflection = new ReflectionClass (ResolveInfo::class);
46
+
47
+ $ resolveInfo = $ resolveInfoReflection ->newInstanceWithoutConstructor ();
48
+
49
+ self ::assertArrayHasKey ('name ' , $ interface );
40
50
self ::assertSame ($ name , $ interface ['name ' ]);
51
+ self ::assertArrayHasKey ('description ' , $ interface );
41
52
self ::assertSame ($ description , $ interface ['description ' ]);
42
53
self ::assertArrayHasKey ('fields ' , $ interface );
43
54
self ::assertIsArray ($ interface ['fields ' ]);
44
55
self ::assertCount (1 , $ interface ['fields ' ]);
45
56
self ::assertArrayHasKey ('resolveType ' , $ interface );
46
57
self ::assertIsCallable ($ interface ['resolveType ' ]);
47
- self ::assertSame (Type::string (), $ interface ['resolveType ' ](true ));
48
- self ::assertSame (Type::int (), $ interface ['resolveType ' ](false ));
58
+ self ::assertSame (Type::string (), $ interface ['resolveType ' ](true , null , $ resolveInfo ));
59
+ self ::assertSame (Type::int (), $ interface ['resolveType ' ](false , null , $ resolveInfo ));
49
60
}
50
61
51
62
public function testInvalidValue (): void
0 commit comments