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)
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)
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)