Skip to content

Commit

Permalink
Merge branch '0.11'
Browse files Browse the repository at this point in the history
  • Loading branch information
mcg-web committed Dec 5, 2018
2 parents 171306b + 93b4abf commit 7233873
Show file tree
Hide file tree
Showing 11 changed files with 54 additions and 50 deletions.
5 changes: 1 addition & 4 deletions src/Config/CustomScalarTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class CustomScalarTypeDefinition extends TypeDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_custom_scalar_config');
$node = self::createNode('_custom_scalar_config');

$node
->children()
Expand Down
5 changes: 1 addition & 4 deletions src/Config/EnumTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class EnumTypeDefinition extends TypeDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_enum_config');
$node = self::createNode('_enum_config');

$node
->children()
Expand Down
5 changes: 1 addition & 4 deletions src/Config/InputObjectTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class InputObjectTypeDefinition extends TypeDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_input_object_config');
$node = self::createNode('_input_object_config');

$node
->children()
Expand Down
5 changes: 1 addition & 4 deletions src/Config/InterfaceTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class InterfaceTypeDefinition extends TypeWithOutputFieldsDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_interface_config');
$node = self::createNode('_interface_config');

$node
->children()
Expand Down
4 changes: 1 addition & 3 deletions src/Config/ObjectTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,12 @@
namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class ObjectTypeDefinition extends TypeWithOutputFieldsDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_object_config');
$node = self::createNode('_object_config');

$node
->children()
Expand Down
32 changes: 20 additions & 12 deletions src/Config/TypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Overblog\GraphQLBundle\Config;

use Overblog\GraphQLBundle\DependencyInjection\Configuration;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;

abstract class TypeDefinition
Expand All @@ -24,16 +25,14 @@ public static function create()

protected function resolveTypeSection()
{
$builder = new TreeBuilder();
$node = $builder->root('resolveType', 'variable');
$node = self::createNode('resolveType', 'variable');

return $node;
}

protected function nameSection()
{
$builder = new TreeBuilder();
$node = $builder->root('name', 'scalar');
$node = self::createNode('name', 'scalar');
$node->isRequired();
$node->validate()
->ifTrue(function ($name) {
Expand All @@ -47,24 +46,21 @@ protected function nameSection()

protected function defaultValueSection()
{
$builder = new TreeBuilder();
$node = $builder->root('defaultValue', 'variable');
$node = self::createNode('defaultValue', 'variable');

return $node;
}

protected function descriptionSection()
{
$builder = new TreeBuilder();
$node = $builder->root('description', 'scalar');
$node = self::createNode('description', 'scalar');

return $node;
}

protected function deprecationReasonSelection()
{
$builder = new TreeBuilder();
$node = $builder->root('deprecationReason', 'scalar');
$node = self::createNode('deprecationReason', 'scalar');

$node->info('Text describing why this field is deprecated. When not empty - field will not be returned by introspection queries (unless forced)');

Expand All @@ -73,8 +69,7 @@ protected function deprecationReasonSelection()

protected function typeSelection($isRequired = false)
{
$builder = new TreeBuilder();
$node = $builder->root('type', 'scalar');
$node = self::createNode('type', 'scalar');

$node->info('One of internal or custom types.');

Expand All @@ -84,4 +79,17 @@ protected function typeSelection($isRequired = false)

return $node;
}

/**
* @internal
*
* @param string $name
* @param string $type
*
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition|\Symfony\Component\Config\Definition\Builder\NodeDefinition
*/
protected static function createNode(string $name, string $type = 'array')
{
return Configuration::getRootNodeWithoutDeprecation(new TreeBuilder($name, $type), $name, $type);
}
}
4 changes: 1 addition & 3 deletions src/Config/TypeWithOutputFieldsDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;

abstract class TypeWithOutputFieldsDefinition extends TypeDefinition
{
Expand All @@ -16,8 +15,7 @@ abstract class TypeWithOutputFieldsDefinition extends TypeDefinition
*/
protected function outputFieldsSelection(string $name = 'fields')
{
$builder = new TreeBuilder();
$node = $builder->root($name);
$node = self::createNode($name);
$node
->isRequired()
->requiresAtLeastOneElement();
Expand Down
5 changes: 1 addition & 4 deletions src/Config/UnionTypeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

namespace Overblog\GraphQLBundle\Config;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;

class UnionTypeDefinition extends TypeDefinition
{
public function getDefinition()
{
$builder = new TreeBuilder();
$node = $builder->root('_union_config');
$node = self::createNode('_union_config');

$node
->children()
Expand Down
32 changes: 23 additions & 9 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder(self::NAME);

// BC layer for symfony/config 4.1 and older
$rootNode = \method_exists($treeBuilder, 'getRootNode') ? $treeBuilder->getRootNode() : $treeBuilder->root(self::NAME);
$rootNode = self::getRootNodeWithoutDeprecation($treeBuilder, self::NAME);

$rootNode
->children()
Expand All @@ -60,7 +59,7 @@ private function batchingMethodSection()
{
$builder = new TreeBuilder('batching_method', 'enum');
/** @var EnumNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root('batching_method', 'enum');
$node = self::getRootNodeWithoutDeprecation($builder, 'batching_method', 'enum');

$node
->values(['relay', 'apollo'])
Expand All @@ -74,7 +73,7 @@ private function errorsHandlerSection()
{
$builder = new TreeBuilder('errors_handler');
/** @var ArrayNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root('errors_handler');
$node = self::getRootNodeWithoutDeprecation($builder, 'errors_handler');
$node
->treatFalseLike(['enabled' => false])
->treatTrueLike(['enabled' => true])
Expand Down Expand Up @@ -139,7 +138,7 @@ private function servicesSection()
{
$builder = new TreeBuilder('services');
/** @var ArrayNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root('services');
$node = self::getRootNodeWithoutDeprecation($builder, 'services');
$node
->addDefaultsIfNotSet()
->children()
Expand Down Expand Up @@ -181,7 +180,7 @@ private function definitionsSchemaSection()
{
$builder = new TreeBuilder('schema');
/** @var ArrayNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root('schema');
$node = self::getRootNodeWithoutDeprecation($builder, 'schema');
$node
->beforeNormalization()
->ifTrue(function ($v) {
Expand Down Expand Up @@ -216,7 +215,7 @@ private function definitionsSchemaSection()
private function definitionsMappingsSection()
{
$builder = new TreeBuilder('mappings');
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root('mappings');
$node = self::getRootNodeWithoutDeprecation($builder, 'mappings');
$node
->children()
->arrayNode('auto_discover')
Expand Down Expand Up @@ -271,7 +270,7 @@ private function builderSection($name)
{
$builder = new TreeBuilder($name);
/** @var ArrayNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root($name);
$node = self::getRootNodeWithoutDeprecation($builder, $name);
$node->beforeNormalization()
->ifTrue(function ($v) {
return \is_array($v) && !empty($v);
Expand Down Expand Up @@ -311,7 +310,7 @@ private function securityQuerySection($name, $disabledValue)
{
$builder = new TreeBuilder($name, 'scalar');
/** @var ScalarNodeDefinition $node */
$node = \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root($name, 'scalar');
$node = self::getRootNodeWithoutDeprecation($builder, $name, 'scalar');
$node->beforeNormalization()
->ifTrue(function ($v) {
return \is_string($v) && \is_numeric($v);
Expand Down Expand Up @@ -342,4 +341,19 @@ private function securityQuerySection($name, $disabledValue)

return $node;
}

/**
* @internal
*
* @param TreeBuilder $builder
* @param string|null $name
* @param string $type
*
* @return ArrayNodeDefinition|\Symfony\Component\Config\Definition\Builder\NodeDefinition
*/
public static function getRootNodeWithoutDeprecation(TreeBuilder $builder, string $name, string $type = 'array')
{
// BC layer for symfony/config 4.1 and older
return \method_exists($builder, 'getRootNode') ? $builder->getRootNode() : $builder->root($name, $type);
}
}
4 changes: 2 additions & 2 deletions src/DependencyInjection/TypesConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ class TypesConfiguration implements ConfigurationInterface

public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('overblog_graphql_types');
$treeBuilder = new TreeBuilder('overblog_graphql_types');
$rootNode = Configuration::getRootNodeWithoutDeprecation($treeBuilder, 'overblog_graphql_types');

$configTypeKeys = \array_map(
function ($type) {
Expand Down
3 changes: 2 additions & 1 deletion tests/Functional/Inheritance/InheritanceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ protected function setUp(): void
public function testObjectInheritance(): void
{
$this->assertArrayHasKey('Query', $this->config);
$this->assertSame(
// TODO(mcg-web): understand why travis fields order diffed from local test
$this->assertEquals(
[
'type' => 'object',
InheritanceProcessor::INHERITS_KEY => ['QueryFoo', 'QueryBar', 'QueryHelloWord'],
Expand Down

0 comments on commit 7233873

Please sign in to comment.