Skip to content

Commit 70bde76

Browse files
authored
Allow FieldDefinitions in ObjectBuilder::setFields() (#100)
1 parent 70b0aa3 commit 70bde76

8 files changed

+13
-18
lines changed

phpcs.xml.dist

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,9 @@
1212
<file>src</file>
1313
<file>tests</file>
1414

15-
<rule ref="Doctrine" />
15+
<rule ref="Doctrine">
16+
<exclude name="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingTraversableTypeHintSpecification" />
17+
<exclude name="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingTraversableTypeHintSpecification" />
18+
<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingTraversableTypeHintSpecification" />
19+
</rule>
1620
</ruleset>

src/Builder/EnumBuilder.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ public function addValue(string $value, ?string $name = null, ?string $descripti
4141
return $this;
4242
}
4343

44-
/**
45-
* @return mixed[]
46-
*/
4744
public function build(): array
4845
{
4946
$parameters = parent::build();

src/Builder/FieldBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function setDeprecationReason(string $reason): self
8181
}
8282

8383
/**
84-
* @return mixed[]
84+
* @return array<string, mixed>
8585
*/
8686
public function build(): array
8787
{

src/Builder/InterfaceBuilder.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ public function setResolveType(callable $resolveType): self
1919
return $this;
2020
}
2121

22-
/**
23-
* @return mixed[]
24-
*/
2522
public function build(): array
2623
{
2724
$parameters = parent::build();

src/Builder/ObjectBuilder.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace SimPod\GraphQLUtils\Builder;
66

7+
use GraphQL\Type\Definition\FieldDefinition;
78
use GraphQL\Type\Definition\InterfaceType;
89
use GraphQL\Type\Definition\ResolveInfo;
910

@@ -12,7 +13,7 @@ class ObjectBuilder extends TypeBuilder
1213
/** @var InterfaceType[] */
1314
private array $interfaces = [];
1415

15-
/** @var callable|mixed[][] */
16+
/** @var callable():array<FieldDefinition|array<string, mixed>>|array<FieldDefinition|array<string, mixed>> */
1617
private $fields = [];
1718

1819
/** @var callable(mixed, array<mixed>, mixed, ResolveInfo) : mixed|null */
@@ -37,7 +38,7 @@ public function addInterface(InterfaceType $interfaceType): self
3738
}
3839

3940
/**
40-
* @param callable|mixed[][] $fields
41+
* @param callable():array<FieldDefinition|array<string, mixed>>|array<FieldDefinition|array<string, mixed>> $fields
4142
*
4243
* @return static
4344
*/
@@ -60,9 +61,6 @@ public function setFieldResolver(callable $fieldResolver): self
6061
return $this;
6162
}
6263

63-
/**
64-
* @return mixed[]
65-
*/
6664
public function build(): array
6765
{
6866
$parameters = parent::build();

src/Builder/TypeBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function setDescription(string $description): self
3636
}
3737

3838
/**
39-
* @return mixed[]
39+
* @return array<string, mixed>
4040
*/
4141
public function build(): array
4242
{

src/Builder/UnionBuilder.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@ public function setTypes(array $types): self
4949
return $this;
5050
}
5151

52-
/**
53-
* @return mixed[]
54-
*/
5552
public function build(): array
5653
{
5754
$parameters = parent::build();

tests/Builder/ObjectBuilderTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace SimPod\GraphQLUtils\Tests\Builder;
66

7+
use GraphQL\Type\Definition\FieldDefinition;
78
use GraphQL\Type\Definition\InterfaceType;
89
use GraphQL\Type\Definition\Type;
910
use PHPUnit\Framework\TestCase;
@@ -35,6 +36,7 @@ public function __construct()
3536
->setFields(
3637
[
3738
FieldBuilder::create('SomeField', Type::string())->build(),
39+
FieldDefinition::create(FieldBuilder::create('Another', Type::string())->build()),
3840
]
3941
)
4042
->setFieldResolver($fieldResolver)
@@ -45,7 +47,7 @@ public function __construct()
4547
self::assertArrayHasKey('fields', $object);
4648
self::assertIsArray($object['fields']);
4749
self::assertSame($fieldResolver, $object['resolveField']);
48-
self::assertCount(1, $object['fields']);
50+
self::assertCount(2, $object['fields']);
4951
}
5052

5153
public function testInvalidName(): void

0 commit comments

Comments
 (0)