|
5 | 5 |
|
6 | 6 | import unittest |
7 | 7 | from decimal import Decimal |
| 8 | +from uuid import uuid4 |
8 | 9 | from gremlin_python.structure.graph import Path, Edge, Vertex |
9 | 10 | from gremlin_python.process.traversal import T, Direction |
10 | 11 | from graph_notebook.network.EventfulNetwork import EVENT_ADD_NODE |
@@ -191,6 +192,75 @@ def test_add_explicit_type_vertex_with_valid_label_and_invalid_tooltip(self): |
191 | 192 | self.assertEqual(node1['label'], '1') |
192 | 193 | self.assertEqual(node1['title'], '1') |
193 | 194 |
|
| 195 | + def test_add_explicit_type_vertex_with_string_id(self): |
| 196 | + v_id = 'a_id' |
| 197 | + vertex = Vertex(id=v_id) |
| 198 | + |
| 199 | + gn = GremlinNetwork() |
| 200 | + gn.add_vertex(vertex) |
| 201 | + node = gn.graph.nodes.get(v_id) |
| 202 | + self.assertIsNotNone(node) |
| 203 | + self.assertEqual(node['properties']['id'], v_id) |
| 204 | + |
| 205 | + def test_add_explicit_type_vertex_with_uuid_id(self): |
| 206 | + v_id = uuid4() |
| 207 | + vertex = Vertex(id=v_id) |
| 208 | + |
| 209 | + gn = GremlinNetwork() |
| 210 | + gn.add_vertex(vertex) |
| 211 | + node = gn.graph.nodes.get(str(v_id)) |
| 212 | + self.assertIsNotNone(node) |
| 213 | + self.assertEqual(node['properties']['id'], str(v_id)) |
| 214 | + |
| 215 | + def test_add_explicit_type_vertex_with_integer_id(self): |
| 216 | + v_id = 1 |
| 217 | + vertex = Vertex(id=v_id) |
| 218 | + |
| 219 | + gn = GremlinNetwork() |
| 220 | + gn.add_vertex(vertex) |
| 221 | + node = gn.graph.nodes.get(v_id) |
| 222 | + self.assertIsNotNone(node) |
| 223 | + self.assertEqual(node['properties']['id'], v_id) |
| 224 | + |
| 225 | + def test_add_vertex_with_string_id(self): |
| 226 | + v_id = 'a_id' |
| 227 | + vertex = { |
| 228 | + T.id: v_id, |
| 229 | + T.label: 'label' |
| 230 | + } |
| 231 | + |
| 232 | + gn = GremlinNetwork() |
| 233 | + gn.add_vertex(vertex) |
| 234 | + node = gn.graph.nodes.get(v_id) |
| 235 | + self.assertIsNotNone(node) |
| 236 | + self.assertEqual(node['properties'][T.id], v_id) |
| 237 | + |
| 238 | + def test_add_vertex_with_uuid_id(self): |
| 239 | + v_id = uuid4() |
| 240 | + vertex = { |
| 241 | + T.id: v_id, |
| 242 | + T.label: 'label' |
| 243 | + } |
| 244 | + |
| 245 | + gn = GremlinNetwork() |
| 246 | + gn.add_vertex(vertex) |
| 247 | + node = gn.graph.nodes.get(str(v_id)) |
| 248 | + self.assertIsNotNone(node) |
| 249 | + self.assertEqual(node['properties'][T.id], str(v_id)) |
| 250 | + |
| 251 | + def test_add_vertex_with_integer_id(self): |
| 252 | + v_id = 99 |
| 253 | + vertex = { |
| 254 | + T.id: v_id, |
| 255 | + T.label: 'label' |
| 256 | + } |
| 257 | + |
| 258 | + gn = GremlinNetwork() |
| 259 | + gn.add_vertex(vertex) |
| 260 | + node = gn.graph.nodes.get(str(v_id)) |
| 261 | + self.assertIsNotNone(node) |
| 262 | + self.assertEqual(node['properties'][T.id], v_id) |
| 263 | + |
194 | 264 | def test_add_vertex_without_node_property(self): |
195 | 265 | vertex = { |
196 | 266 | T.id: '1234', |
@@ -753,6 +823,51 @@ def test_add_vertex_with_Decimal_type_property_in_list(self): |
753 | 823 | self.assertIsInstance(final_lon_value, float) |
754 | 824 | self.assertIsInstance(final_lat_value, float) |
755 | 825 |
|
| 826 | + def test_add_explicit_type_single_edge_with_string_id(self): |
| 827 | + vertex1 = Vertex(id='1') |
| 828 | + vertex2 = Vertex(id='2') |
| 829 | + e_id = '1' |
| 830 | + |
| 831 | + edge1 = Edge(id=e_id, outV=vertex1, inV=vertex2, label='route') |
| 832 | + |
| 833 | + gn = GremlinNetwork() |
| 834 | + gn.add_vertex(vertex1) |
| 835 | + gn.add_vertex(vertex2) |
| 836 | + gn.add_path_edge(edge1) |
| 837 | + edge = gn.graph.get_edge_data('1', '2') |
| 838 | + self.assertIsNotNone(edge) |
| 839 | + self.assertEqual(edge[e_id]['properties']['id'], e_id) |
| 840 | + |
| 841 | + def test_add_explicit_type_single_edge_with_uuid_id(self): |
| 842 | + vertex1 = Vertex(id='1') |
| 843 | + vertex2 = Vertex(id='2') |
| 844 | + e_id = uuid4() |
| 845 | + |
| 846 | + edge1 = Edge(id=e_id, outV=vertex1, inV=vertex2, label='route') |
| 847 | + |
| 848 | + gn = GremlinNetwork() |
| 849 | + gn.add_vertex(vertex1) |
| 850 | + gn.add_vertex(vertex2) |
| 851 | + gn.add_path_edge(edge1) |
| 852 | + edge = gn.graph.get_edge_data('1', '2') |
| 853 | + self.assertIsNotNone(edge) |
| 854 | + self.assertEqual(edge[str(e_id)]['properties']['id'], str(e_id)) |
| 855 | + |
| 856 | + def test_add_explicit_type_single_edge_with_integer_id(self): |
| 857 | + vertex1 = Vertex(id='1') |
| 858 | + vertex2 = Vertex(id='2') |
| 859 | + e_id = 1 |
| 860 | + |
| 861 | + edge1 = Edge(id=e_id, outV=vertex1, inV=vertex2, label='route') |
| 862 | + |
| 863 | + gn = GremlinNetwork() |
| 864 | + gn.add_vertex(vertex1) |
| 865 | + gn.add_vertex(vertex2) |
| 866 | + gn.add_path_edge(edge1) |
| 867 | + edge = gn.graph.get_edge_data('1', '2') |
| 868 | + self.assertIsNotNone(edge) |
| 869 | + self.assertEqual(edge[e_id]['properties']['id'], e_id) |
| 870 | + |
756 | 871 | def test_add_explicit_type_single_edge_without_edge_property(self): |
757 | 872 | vertex1 = Vertex(id='1') |
758 | 873 | vertex2 = Vertex(id='2') |
@@ -981,6 +1096,51 @@ def test_add_explicit_type_single_edge_with_valid_label_and_invalid_tooltip(self |
981 | 1096 | self.assertEqual(edge['1']['label'], 'v[2]') |
982 | 1097 | self.assertEqual(edge['1']['title'], 'v[2]') |
983 | 1098 |
|
| 1099 | + def test_add_single_edge_with_string_id(self): |
| 1100 | + vertex1 = Vertex(id='1') |
| 1101 | + vertex2 = Vertex(id='2') |
| 1102 | + e_id = '1' |
| 1103 | + |
| 1104 | + edge1 = {T.id: e_id, T.label: 'route', 'outV': 'v[1]', 'inV': 'v[2]'} |
| 1105 | + |
| 1106 | + gn = GremlinNetwork() |
| 1107 | + gn.add_vertex(vertex1) |
| 1108 | + gn.add_vertex(vertex2) |
| 1109 | + gn.add_path_edge(edge1, from_id='1', to_id='2') |
| 1110 | + edge = gn.graph.get_edge_data('1', '2') |
| 1111 | + self.assertIsNotNone(edge) |
| 1112 | + self.assertEqual(edge[e_id]['properties'][T.id], e_id) |
| 1113 | + |
| 1114 | + def test_add_single_edge_with_uuid_id(self): |
| 1115 | + vertex1 = Vertex(id='1') |
| 1116 | + vertex2 = Vertex(id='2') |
| 1117 | + e_id = uuid4() |
| 1118 | + |
| 1119 | + edge1 = {T.id: e_id, T.label: 'route', 'outV': 'v[1]', 'inV': 'v[2]'} |
| 1120 | + |
| 1121 | + gn = GremlinNetwork() |
| 1122 | + gn.add_vertex(vertex1) |
| 1123 | + gn.add_vertex(vertex2) |
| 1124 | + gn.add_path_edge(edge1, from_id='1', to_id='2') |
| 1125 | + edge = gn.graph.get_edge_data('1', '2') |
| 1126 | + self.assertIsNotNone(edge) |
| 1127 | + self.assertEqual(edge[str(e_id)]['properties'][T.id], str(e_id)) |
| 1128 | + |
| 1129 | + def test_add_single_edge_with_integer_id(self): |
| 1130 | + vertex1 = Vertex(id='1') |
| 1131 | + vertex2 = Vertex(id='2') |
| 1132 | + e_id = 1 |
| 1133 | + |
| 1134 | + edge1 = {T.id: e_id, T.label: 'route', 'outV': 'v[1]', 'inV': 'v[2]'} |
| 1135 | + |
| 1136 | + gn = GremlinNetwork() |
| 1137 | + gn.add_vertex(vertex1) |
| 1138 | + gn.add_vertex(vertex2) |
| 1139 | + gn.add_path_edge(edge1, from_id='1', to_id='2') |
| 1140 | + edge = gn.graph.get_edge_data('1', '2') |
| 1141 | + self.assertIsNotNone(edge) |
| 1142 | + self.assertEqual(edge[str(e_id)]['properties'][T.id], e_id) |
| 1143 | + |
984 | 1144 | def test_add_single_edge_without_edge_property(self): |
985 | 1145 | vertex1 = Vertex(id='1') |
986 | 1146 | vertex2 = Vertex(id='2') |
@@ -2213,6 +2373,26 @@ def test_add_elementmap_edge(self): |
2213 | 2373 | self.assertEqual(inv_data['properties'], edge_map[Direction.IN]) |
2214 | 2374 | self.assertEqual(outv_data['properties'], edge_map[Direction.OUT]) |
2215 | 2375 |
|
| 2376 | + def test_add_elementmap_edge_with_direction_uuid_ids(self): |
| 2377 | + in_node_id = uuid4() |
| 2378 | + out_node_id = uuid4() |
| 2379 | + edge_map = { |
| 2380 | + T.id: '5298', |
| 2381 | + T.label: 'route', |
| 2382 | + Direction.IN: {T.id: in_node_id, T.label: 'airport'}, |
| 2383 | + Direction.OUT: {T.id: out_node_id, T.label: 'airport'}, |
| 2384 | + 'dist': 763 |
| 2385 | + } |
| 2386 | + |
| 2387 | + gn = GremlinNetwork() |
| 2388 | + gn.insert_elementmap(edge_map, index=1) |
| 2389 | + inv_data = gn.graph.nodes.get(str(in_node_id)) |
| 2390 | + outv_data = gn.graph.nodes.get(str(out_node_id)) |
| 2391 | + self.assertIsNotNone(inv_data) |
| 2392 | + self.assertIsNotNone(outv_data) |
| 2393 | + self.assertEqual(inv_data['properties'][T.id], str(edge_map[Direction.IN][T.id])) |
| 2394 | + self.assertEqual(outv_data['properties'][T.id], str(edge_map[Direction.OUT][T.id])) |
| 2395 | + |
2216 | 2396 | def test_add_elementmap_edge_groupby_depth(self): |
2217 | 2397 | edge_map = { |
2218 | 2398 | T.id: '5298', |
|
0 commit comments