def assertQsParams(self, queryset, expected, url=None): # fix the fact the the test test uniq value, but the # compiler return a dict of list (even if there is on element each times) compiler = SQLCompiler(queryset.query, connections['api'], 'api') compiler.setup_query() pk, params = compiler.build_params_and_pk() if url: self.assertEqual(url, get_resource_path(queryset.model, pk=pk)) self.assertEqual(dict_of_set(params), dict_of_set(expected))
def assertQsToOrder(self, queryset, res): # fix the fact the the test test uniq value, but the # compiler return a dict of list (even if there is on element each times) for k, v in res.items(): if not isinstance(v, list): res[k] = [v] compiler = SQLCompiler(queryset.query, connections['api'], 'api') compiler.setup_query() self.assertEqual(compiler.build_sort_params(), res)
def assertQsToInclude(self, queryset, expected): for k, v in expected.items(): if isinstance(v, list): expected[k] = set(expected[k]) elif not isinstance(v, set): expected[k] = {v} compiler = SQLCompiler(queryset.query, connections['api'], 'api') compiler.setup_query() self.assertEqual(compiler.build_include_exclude_params(), expected)
def assertJoinEqual(self, queryset, expected, current_obj_pk): reader = ApiResponseReader(self.json_data) qs = queryset compiler = SQLCompiler(qs.query, None, 'api') compiler.setup_query() resources, fields_path = compiler.query_parser.get_resources_for_cols( [col for col, _, _ in compiler.select]) current_obj = reader[qs.model][current_obj_pk] tree = build_aliases_tree(resources) aliases_list = list(resolve_tree(tree)) results = list( join_aliases(aliases_list, reader, {tree.alias: current_obj})) formated_results = [{ alias.model.__name__: val for alias, val in d.items() } for d in results] self.assertEqual(formated_results, expected)
def assertGoodQs(self, queryset): compiler = SQLCompiler(queryset.query, connections['api'], 'api') compiler.setup_query() self.assertIsNone(compiler.check_compatibility())
def assertBadQs(self, queryset, expected=NotSupportedError): compiler = SQLCompiler(queryset.query, connections['api'], 'api') # con't setup query since this call check_compatibility self.assertRaises(expected, compiler.check_compatibility)
def get_compiler(self, queryset): return SQLCompiler(queryset.query, connections['api'], 'api')