mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-11 10:09:24 +03:00
Allow one-liner shorthand for field definitions (#47)
This commit is contained in:
parent
09cc313072
commit
5148c3bf03
@ -95,6 +95,9 @@ class FieldDefinition
|
|||||||
{
|
{
|
||||||
$map = [];
|
$map = [];
|
||||||
foreach ($fields as $name => $field) {
|
foreach ($fields as $name => $field) {
|
||||||
|
if ($field instanceof Type) {
|
||||||
|
$field = ['type' => $field];
|
||||||
|
}
|
||||||
if (!isset($field['name'])) {
|
if (!isset($field['name'])) {
|
||||||
$field['name'] = $name;
|
$field['name'] = $name;
|
||||||
}
|
}
|
||||||
|
@ -617,4 +617,38 @@ class DefinitionTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertSame($interface->getField('nested')->getType(), $interface);
|
$this->assertSame($interface->getField('nested')->getType(), $interface);
|
||||||
$this->assertSame($interface->getField('value')->getType(), Type::string());
|
$this->assertSame($interface->getField('value')->getType(), Type::string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAllowsShorthandFieldDefinition()
|
||||||
|
{
|
||||||
|
$interface = new InterfaceType([
|
||||||
|
'name' => 'SomeInterface',
|
||||||
|
'fields' => function() use (&$interface) {
|
||||||
|
return [
|
||||||
|
'value' => Type::string(),
|
||||||
|
'nested' => $interface
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
$query = new ObjectType([
|
||||||
|
'name' => 'Query',
|
||||||
|
'fields' => [
|
||||||
|
'test' => $interface
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$schema = new Schema([
|
||||||
|
'query' => $query
|
||||||
|
]);
|
||||||
|
|
||||||
|
$valueField = $schema->getType('SomeInterface')->getField('value');
|
||||||
|
$nestedField = $schema->getType('SomeInterface')->getField('nested');
|
||||||
|
|
||||||
|
$this->assertEquals(Type::string(), $valueField->getType());
|
||||||
|
$this->assertEquals($interface, $nestedField->getType());
|
||||||
|
|
||||||
|
$testField = $schema->getType('Query')->getField('test');
|
||||||
|
$this->assertEquals($interface, $testField->getType());
|
||||||
|
$this->assertEquals('test', $testField->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user