예제 #1
0
 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))
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
 def assertGoodQs(self, queryset):
     compiler = SQLCompiler(queryset.query, connections['api'], 'api')
     compiler.setup_query()
     self.assertIsNone(compiler.check_compatibility())
예제 #6
0
 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)
예제 #7
0
 def get_compiler(self, queryset):
     return SQLCompiler(queryset.query, connections['api'], 'api')