mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-06 07:49: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 = [];
|
||||
foreach ($fields as $name => $field) {
|
||||
if ($field instanceof Type) {
|
||||
$field = ['type' => $field];
|
||||
}
|
||||
if (!isset($field['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('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