def testCreateABuiltInNodeTypeWithACustomNodeBuilder(self): builder = TreeBuilder(); root = builder.root('builtin', 'array', CustomNodeBuilder()); definition = root.children().booleanNode('boolean'); self.assertEqual(ReflectionObject(definition).getName(), 'pymfony.component.config.definition.builder.BooleanNodeDefinition');
def testAddANodeType(self): builder = TreeBuilder(); root = builder.root('override', 'array', CustomNodeBuilder()); definition = root.children().barNode('variable'); self.assertEqual(ReflectionObject(definition).getName(), __name__ + '.BarNodeDefinition');
def testUsingACustomNodeBuilder(self): builder = TreeBuilder(); root = builder.root('custom', 'array', CustomNodeBuilder()); nodeBuilder = root.children(); self.assertEqual(ReflectionObject(nodeBuilder).getName(), __name__ + '.CustomNodeBuilder'); nodeBuilder = nodeBuilder.arrayNode('deeper').children(); self.assertEqual(ReflectionObject(nodeBuilder).getName(), __name__ + '.CustomNodeBuilder');
def testAnExtendedNodeBuilderGetsPropagatedToTheChildren(self): builder = TreeBuilder(); n = builder.root('propagation') n = n.children() n = n.setNodeClass('extended', __name__ + '.VariableNodeDefinition') n = n.node('foo', 'extended').end() n = n.arrayNode('child') n = n.children() n = n.node('foo', 'extended') n = n.end() n = n.end() n = n.end();
def _getTestBuilder(self): """Create a test treebuilder with a variable node, and init the validation @return TreeBuilder """ builder = TreeBuilder(); builder = builder.root('test') builder = builder.children() builder = builder.variableNode('key') builder = builder.validate() return builder;
def testDefinitionInfoGetsTransferredToNode(self): builder = TreeBuilder(); n = builder.root('test').info('root info') n = n.children() n = n.node('child', 'variable').info('child info').defaultValue('default') n = n.end() n = n.end(); tree = builder.buildTree(); children = tree.getChildren(); self.assertEqual('root info', tree.getInfo()); self.assertEqual('child info', children['child'].getInfo());
def getConfigTreeBuilder(self): """Generates the configuration tree builder. @return: TreeBuilder The tree builder @raise RuntimeException: When using the deprecated 'charset' setting """ treeBuilder = TreeBuilder() rootNode = treeBuilder.root('framework') node = rootNode.children() node = node.scalarNode('default_locale').defaultValue("en").end() node = node.end() return treeBuilder
def testForbiddenOverwrite(self): """@expectedException Symfony\Component\Config\Definition\Exception\ForbiddenOverwriteException """ try: tb = TreeBuilder(); tree = tb tree = tree.root('root', 'array') tree = tree.children() tree = tree.node('foo', 'scalar') tree = tree.cannotBeOverwritten() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'foo': 'bar', }; b = { 'foo': 'moo', }; tree.merge(a, b); self.fail(); except Exception as e: self.assertTrue(isinstance(e, ForbiddenOverwriteException));
def test(denormalized): tb = TreeBuilder(); tree = tb tree = tree.root('root_name', 'array') tree = tree.fixXmlConfig('encoder') tree = tree.children() tree = tree.node('encoders', 'array') tree = tree.useAttributeAsKey('class') tree = tree.prototype('array') tree = tree.beforeNormalization().ifString().then(lambda v: {'algorithm': v}).end() tree = tree.children() tree = tree.node('algorithm', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); normalized = { 'encoders': { 'foo': {'algorithm': 'plaintext'}, }, }; self.assertNormalized(tree, denormalized, normalized);
def testDefinitionExampleGetsTransferredToNode(self): builder = TreeBuilder(); n = builder.root('test') n = n.example({'key': 'value'}) n = n.children() n = n.node('child', 'variable').info('child info').defaultValue('default').example('example') n = n.end() n = n.end(); tree = builder.buildTree(); children = tree.getChildren(); self.assertTrue(isinstance(tree.getExample(), dict)); self.assertEqual('example', children['child'].getExample());
def getConfigTreeBuilder(self): treeBuilder = TreeBuilder() rootNode = treeBuilder.root('root') n = rootNode n = n.children() n = n.booleanNode('boolean').defaultTrue().end() n = n.scalarNode('scalar_empty').end() n = n.scalarNode('scalar_null').defaultNull().end() n = n.scalarNode('scalar_true').defaultTrue().end() n = n.scalarNode('scalar_false').defaultFalse().end() n = n.scalarNode('scalar_default').defaultValue('default').end() n = n.scalarNode('scalar_array_empty').defaultValue([]).end() n = n.scalarNode('scalar_array_defaults').defaultValue( ['elem1', 'elem2']).end() n = n.arrayNode('array') n = n.info('some info') n = n.canBeUnset() n = n.children() n = n.scalarNode('child1').end() n = n.scalarNode('child2').end() n = n.scalarNode('child3') n = n.info("this is a long\n" "multi-line info text\n" "which should be indented") n = n.example('example setting') n = n.end() n = n.end() n = n.end() n = n.arrayNode('array_prototype') n = n.children() n = n.arrayNode('parameters') n = n.useAttributeAsKey('name') n = n.prototype('array') n = n.children() n = n.scalarNode('value').isRequired().end() n = n.end() n = n.end() n = n.end() n = n.end() n = n.end() n = n.end() return treeBuilder
def getConfigTreeBuilder(self): """Generates the configuration tree builder. @return: TreeBuilder The tree builder @raise RuntimeException: When using the deprecated 'charset' setting """ treeBuilder = TreeBuilder(); rootNode = treeBuilder.root('framework'); node = rootNode.children(); node = node.scalarNode('default_locale'); node = node.defaultValue("en"); node = node.end(); node = node.end(); self.__addConsoleSection(rootNode); return treeBuilder;
def testAssociativeArrayPreserveKeys(self): tb = TreeBuilder(); tree = tb tree = tree.root('root', 'array') tree = tree.prototype('array') tree = tree.children() tree = tree.node('foo', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); data = {'first': {'foo': 'bar'}}; self.assertNormalized(tree, data, data);
def __getNumericKeysTestTree(self): tb = TreeBuilder(); tree = tb tree = tree.root('root', 'array') tree = tree.children() tree = tree.node('thing', 'array') tree = tree.useAttributeAsKey('id') tree = tree.prototype('array') tree = tree.prototype('scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); return tree;
def testUnsetKey(self): tb = TreeBuilder(); tree = tb tree = tree.root('root', 'array') tree = tree.children() tree = tree.node('foo', 'scalar').end() tree = tree.node('bar', 'scalar').end() tree = tree.node('unsettable', 'array') tree = tree.canBeUnset() tree = tree.children() tree = tree.node('foo', 'scalar').end() tree = tree.node('bar', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.node('unsetted', 'array') tree = tree.canBeUnset() tree = tree.prototype('scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'foo': 'bar', 'unsettable': { 'foo': 'a', 'bar': 'b', }, 'unsetted': False, }; b = { 'foo': 'moo', 'bar': 'b', 'unsettable': False, 'unsetted': ['a', 'b'], }; self.assertEqual({ 'foo': 'moo', 'bar': 'b', 'unsettable': False, 'unsetted': ['a', 'b'], }, tree.merge(a, b));
def testUnsetKeyWithDeepHierarchy(self): tb = TreeBuilder(); tree = tb tree = tree.root('config', 'array') tree = tree.children() tree = tree.node('level1', 'array') tree = tree.canBeUnset() tree = tree.children() tree = tree.node('level2', 'array') tree = tree.canBeUnset() tree = tree.children() tree = tree.node('somevalue', 'scalar').end() tree = tree.node('anothervalue', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.node('level1_scalar', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'level1': { 'level2': { 'somevalue': 'foo', 'anothervalue': 'bar', }, 'level1_scalar': 'foo', }, }; b = { 'level1': { 'level2': False, }, }; self.assertEqual({ 'level1': { 'level1_scalar': 'foo', }, }, self._process(tree, [a, b]));
def test(denormalized): tb = TreeBuilder(); tree = tb tree = tree.root('root', 'array') tree = tree.children() tree = tree.node('logout', 'array') tree = tree.fixXmlConfig('handler') tree = tree.children() tree = tree.node('handlers', 'array') tree = tree.prototype('scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); normalized = {'logout': {'handlers': {0: 'a', 1: 'b', 2: 'c'}}}; self.assertNormalized(tree, denormalized, normalized);
def testDoesNotAllowNewKeysInSubsequentConfigs(self): """@expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException """ try: tb = TreeBuilder(); tree = tb tree = tree.root('config', 'array') tree = tree.children() tree = tree.node('test', 'array') tree = tree.disallowNewKeysInSubsequentConfigs() tree = tree.useAttributeAsKey('key') tree = tree.prototype('array') tree = tree.children() tree = tree.node('value', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'test': { 'a': {'value': 'foo'} } }; b = { 'test': { 'b': {'value': 'foo'} } }; tree.merge(a, b); self.fail() except Exception as e: self.assertTrue(isinstance(e, InvalidConfigurationException));
def testPrototypeWithoutAKeyAttribute(self): tb = TreeBuilder(); tree = tb tree = tree.root('config', 'array') tree = tree.children() tree = tree.arrayNode('append_elements') tree = tree.prototype('scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'append_elements': ['a', 'b'], }; b = { 'append_elements': ['c', 'd'], }; self.assertEqual({'append_elements': {0: 'a', 1: 'b', 2: 'c', 3: 'd'}}, tree.merge(a, b));
def testPerformsNoDeepMerging(self): tb = TreeBuilder(); tree = tb tree = tree.root('config', 'array') tree = tree.children() tree = tree.node('no_deep_merging', 'array') tree = tree.performNoDeepMerging() tree = tree.children() tree = tree.node('foo', 'scalar').end() tree = tree.node('bar', 'scalar').end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.end() tree = tree.buildTree(); a = { 'no_deep_merging': { 'foo': 'a', 'bar': 'b', }, }; b = { 'no_deep_merging': { 'c': 'd', } }; self.assertEqual({ 'no_deep_merging': { 'c': 'd', } }, tree.merge(a, b));
def testPrototypedArrayNodeUseTheCustomNodeBuilder(self): builder = TreeBuilder(); root = builder.root('override', 'array', CustomNodeBuilder()); root.prototype('bar').end();