def test_order(self): seed = self.graph.vertex.create('test') seed.link('test', self.graph.vertex.create('test', value=5)) seed.link('test', self.graph.vertex.create('test', value=4)) seed.link('test', self.graph.vertex.create('test', value=1)) query = gremlin.query(gremlin.outgoings, gremlin.end, gremlin.key('value'), gremlin.value) # the order is not guaranteed.. self.assertEqual(set(query(self.graph, seed)), set([5, 4, 1])) query = gremlin.query(gremlin.outgoings, gremlin.end, gremlin.key('value'), gremlin.sort(), gremlin.value) self.assertEqual(list(query(self.graph, seed)), [1, 4, 5])
def test_outgoings(self): seed = self.graph.vertex.create('test') other = self.graph.vertex.create('test') seed.link('test', other) other.link('test', self.graph.vertex.create('test')) other.link('test', self.graph.vertex.create('test')) query = gremlin.query(gremlin.outgoings, gremlin.end, gremlin.outgoings, gremlin.count) self.assertEqual(query(self.graph, seed), 2)
def test_limit(self): seed = self.graph.vertex.create('seed') seed.link('test', self.graph.vertex.create('one')) seed.link('test', self.graph.vertex.create('two')) seed.link('test', self.graph.vertex.create('one')) query = gremlin.query(gremlin.outgoings, gremlin.limit(2)) count = len(list(query(self.graph, seed))) self.assertEqual(count, 2)
def test_where(self): seed = self.graph.vertex.create('seed') seed.link('test', self.graph.vertex.create('one'), ok=True) seed.link('test', self.graph.vertex.create('two'), ok=True) seed.link('test', self.graph.vertex.create('one'), ok=False) query = gremlin.query(gremlin.outgoings, gremlin.where(ok=True)) count = len(list(query(self.graph, seed))) self.assertEqual(count, 2)
def test_unique(self): seed = self.graph.vertex.create('test') seed.link('test', self.graph.vertex.create('test', value=1)) seed.link('test', self.graph.vertex.create('test', value=1)) seed.link('test', self.graph.vertex.create('test', value=1)) query = gremlin.query(gremlin.outgoings, gremlin.end, gremlin.key('value'), gremlin.unique, gremlin.value) results = list(query(self.graph, seed)) self.assertEqual(results, [1])
def test_incomings_three(self): seed = self.graph.vertex.create('test') other = self.graph.vertex.create('test') seed.link('test', other) end = self.graph.vertex.create('test') other.link('test', end) query = gremlin.query(gremlin.incomings, gremlin.start, gremlin.incomings, gremlin.start, gremlin.get) self.assertEqual(query(self.graph, end), [seed])
def get_or_create(graphdb, label, key, value): try: return gremlin.query( gremlin.select_vertices(**dict(key=value)), gremlin.limit(1), gremlin.get )(graphdb)[0] except IndexError: return graphdb.vertex.create(label, **dict(key=value))
def test_path(self): seed = self.graph.vertex.create('test') other = self.graph.vertex.create('test') link = seed.link('test', other) query = gremlin.query( gremlin.incomings, gremlin.start, gremlin.path(2), gremlin.each(gremlin.get), gremlin.value, ) path = next(query(self.graph, other)) self.assertEqual(path, [seed, link, other])
def test_select_and_key_index_edges(self): self.graph.edge.key_index('key') start = self.graph.vertex.create('start') end = self.graph.vertex.create('end') start.link('link', end, key='two') start.link('link', end, key='two') start.link('link', end, key='one') query = gremlin.query(gremlin.select_edges(key='one'), gremlin.count) count = query(self.graph) self.assertEqual(count, 1)
def test_select_and_key_index_vertices(self): self.graph.vertex.key_index('key') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='two') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='two') self.graph.vertex.create('seed', key='one') query = gremlin.query(gremlin.select_vertices(key='one'), gremlin.count) count = query(self.graph) self.assertEqual(count, 4)
def test_select_and_key_index_edges(self): self.graph.edge.key_index('key') start = self.graph.vertex.create('start') end = self.graph.vertex.create('end') start.link('link', end, key='two') start.link('link', end, key='two') start.link('link', end, key='one') query = gremlin.query( gremlin.select_edges(key='one'), gremlin.count ) count = query(self.graph) self.assertEqual(count, 1)
def test_select_and_key_index_vertices(self): self.graph.vertex.key_index('key') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='two') self.graph.vertex.create('seed', key='one') self.graph.vertex.create('seed', key='two') self.graph.vertex.create('seed', key='one') query = gremlin.query( gremlin.select_vertices(key='one'), gremlin.count ) count = query(self.graph) self.assertEqual(count, 4)
def test_incomings(self): seed = self.graph.vertex.create('test') other = self.graph.vertex.create('test') link = seed.link('test', other) query = gremlin.query(gremlin.incomings, gremlin.get) self.assertEqual(query(self.graph, other), [link])