def test_invalid_queries(self): for query in invalid_queries: try: with self.assertRaises(InvalidQuery): restrict_query_to_sketch(query, 42) except AssertionError as e: raise self.failureException('%s for %s' % (e.message, query))
def test_edge_with_invalid_properties(self, _, query): patterns = ('()%s[%s{%s}]%s()' % (left, name, props, right) for name in edge_names() for left, right in edge_directions() for props in invalid_properties()) for input_pattern in patterns: with self.assertRaises(InvalidQuery): restrict_query_to_sketch(query % input_pattern, 42)
def test_node_with_invalid_properties(self, test_name, query): if 'pattern' in test_name: return patterns = ('(%s{%s})' % (name, props) for name in node_names() for props in invalid_properties()) for input_pattern in patterns: with self.assertRaises(InvalidQuery): restrict_query_to_sketch(query % input_pattern, 42)
def test_spaces_in_rel_pattern(self): queries_with_spaces_int_rel_pattern = [ 'MATCH () - - ()', 'MATCH () -- >()', 'MATCH ()< --()', 'MATCH ()<- -()', 'MATCH ()<- - ()', ] for query in queries_with_spaces_int_rel_pattern: try: with self.assertRaises(InvalidQuery): print restrict_query_to_sketch(query, 42) except AssertionError as e: raise self.failureException('%s for %s' % (e.message, query))
def transpile_part(part): if ' '.join(part.split()).strip() in ('UNION', 'UNION ALL'): return part.strip() part = restrict_query_to_sketch(part, sketch_id) part = append_return_clause(part) part = unwind_timestamps(part) return part.strip()
def test_node_without_properties(self, test_name, query): if 'pattern' in test_name: return patterns = (('(%s)' % name, '(%s{sketch_id: 42})' % name) for name in node_names()) for input_pattern, expected_pattern in patterns: output = restrict_query_to_sketch(query % input_pattern, 42) self.assertEqual(output, ((query % expected_pattern).replace( ', }', '}').replace(', }', ' }')))
def test_edge_without_bracket(self, _, query): patterns = (( '()%s%s()' % (left, right), '({sketch_id: 42})%s[{sketch_id: 42}]%s({sketch_id: 42})' % (left, right), ) for left, right in edge_directions()) for input_pattern, expected_pattern in patterns: output = restrict_query_to_sketch(query % input_pattern, 42) self.assertEqual(output, ((query % expected_pattern).replace( ', }', '}').replace(', }', ' }')))
def test_edge_with_properties(self, _, query): patterns = ( ('()%s[%s{%s}]%s()' % (left, name, props, right), '({sketch_id: 42})%s[%s{sketch_id: 42, %s}]%s({sketch_id: 42})' % (left, name, props, right)) for name in edge_names() for left, right in edge_directions() for props in valid_properties()) for input_pattern, expected_pattern in patterns: output = restrict_query_to_sketch(query % input_pattern, 42) self.assertEqual(output, ((query % expected_pattern).replace( ', }', '}').replace(', }', ' }')))