Ejemplo n.º 1
0
    def test_create_node(self):
        stmt = MagicMock()
        stmt.__class__.__name__ = 'CreateStatementNode'
        stmt.typed.__class__.__name__ = 'NodeTypeNode'
        stmt.typed.types = ['n1', 'n2']

        assign0 = MagicMock()
        assign0.__class__.__name__ = 'AssignAddNode'
        assign0.propname = 'foo_set'
        assign0.val = 'bar'

        assign1 = MagicMock()
        assign1.__class__.__name__ = 'AssignSetNode'
        assign1.propname = 'bar_register'
        assign1.val = 'baz'

        stmt.typed.properties = [assign0, assign1]
        stmt.typed.alias = 'node0'

        aliased_sets = {}
        result = self.crud([stmt], aliased_sets)

        self.assertEqual(len(result), 0)
        self.assertIn('node0', aliased_sets)
        self.assertEqual(aliased_sets['node0']['type'], 'nodes')
        self.assertEqual(len(aliased_sets['node0']['dataset']), 1)

        result = aliased_sets['node0']['dataset'][0]

        self.assertEqual(result['type_set'], {'n1', 'n2'})
        self.assertEqual(result['foo_set'], {'bar'})
        self.assertEqual(result['bar_register'], 'baz')

        data_id = result['_id']
        self.assertIn(data_id, self.graphmgr.nodes_storage)
Ejemplo n.º 2
0
    def test_create_rel_with_alias(self):
        self.expected_nodes = {
            'targets_set:"*:woody"': []
        }

        stmt = MagicMock()
        stmt.__class__.__name__ = 'CreateStatementNode'
        stmt.typed.__class__.__name__ = 'RelationTypeNode'
        stmt.typed.types = ['r1', 'r2']

        stmt.typed.links.source.__class__.__name__ = 'AliasNode'
        stmt.typed.links.source.name = 'node0'

        stmt.typed.links.target.__class__.__name__ = 'AliasNode'
        stmt.typed.links.target.name = 'node1'

        assign0 = MagicMock()
        assign0.__class__.__name__ = 'AssignSetNode'
        assign0.propname = '_id'
        assign0.val = 'foo'

        stmt.typed.properties = [assign0]
        stmt.typed.alias = 'rel0'

        aliased_sets = {
            'node0': {
                'type': 'node',
                'dataset': [
                    {'_id': 'buzz'}
                ]
            },
            'node1': {
                'type': 'node',
                'dataset': [
                    {'_id': 'woody'}
                ]
            }
        }
        result = self.crud([stmt], aliased_sets)

        self.assertEqual(len(result), 0)
        self.assertIn('rel0', aliased_sets)
        self.assertEqual(aliased_sets['rel0']['type'], 'relationships')
        self.assertEqual(len(aliased_sets['rel0']['dataset']), 1)

        result = aliased_sets['rel0']['dataset'][0]

        self.assertEqual(result['_id'], 'foo')
        self.assertEqual(result['type_set'], {'r1', 'r2'})
        self.assertIn('foo', self.graphmgr.relationships_storage)
Ejemplo n.º 3
0
    def test_update_relation(self):
        stmt = MagicMock()
        stmt.__class__.__name__ = 'UpdateStatementNode'

        update0 = MagicMock()
        update0.__class__.__name__ = 'UpdateSetPropertyNode'
        update0.alias = 'elt0'
        update0.propname = 'foo'
        update0.value = 'bar'

        update1 = MagicMock()
        update1.__class__.__name__ = 'UpdateAddPropertyNode'
        update1.alias = 'elt0'
        update1.propname = 'bar'
        update1.value = 'biz'

        update2 = MagicMock()
        update2.__class__.__name__ = 'UpdateUnsetPropertyNode'
        update2.alias = 'elt0'
        update2.propname = 'baz'

        update3 = MagicMock()
        update3.__class__.__name__ = 'UpdateDelPropertyNode'
        update3.alias = 'elt0'
        update3.propname = 'bar'
        update3.value = 'baz'

        stmt.updates = [update0, update1, update2, update3]

        aliased_sets = {
            'elt0': {
                'type': 'relationships',
                'dataset': [
                    {'_id': 'foo'}
                ]
            }
        }

        m = Map(value={
            'foo_register': 'foo',
            'bar_set': {'baz'},
            'baz_register': 'foo'
        })
        self.relationships = {
            'foo': m
        }

        result = self.crud([stmt], aliased_sets)

        self.assertEqual(len(result), 1)
        self.assertIn('elt0', result[0])
        self.assertEqual(len(result[0]['elt0']), 1)

        expected = {
            '_id': 'foo',
            'foo_register': 'bar',
            'bar_set': {'biz'}
        }
        self.assertIn(expected, result[0]['elt0'])
        del expected['_id']
        self.assertEqual(self.relationships['foo'].current, expected)