| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | from django.contrib import adminfrom django.test import TestCase, RequestFactoryfrom django.utils.encoding import smart_textfrom jet.filters import RelatedFieldAjaxListFilterfrom jet.tests.models import RelatedToTestModel, TestModeltry:    from django.contrib.admin.utils import get_fields_from_pathexcept ImportError: # Django 1.6    from django.contrib.admin.util import get_fields_from_pathclass FiltersTestCase(TestCase):    def setUp(self):        self.models = []        self.factory = RequestFactory()        self.models.append(TestModel.objects.create(field1='first', field2=1))        self.models.append(TestModel.objects.create(field1='second', field2=2))    def get_related_field_ajax_list_filter_params(self):        model = RelatedToTestModel        field_path = 'field'        field = get_fields_from_path(model, field_path)[-1]        lookup_params = {}        model_admin = admin.site._registry.get(model)        return field, lookup_params, model, model_admin, field_path    def test_related_field_ajax_list_filter(self):        request = self.factory.get('url')        field, lookup_params, model, model_admin, field_path = self.get_related_field_ajax_list_filter_params()        list_filter = RelatedFieldAjaxListFilter(field, request, lookup_params, model, model_admin, field_path)        self.assertTrue(list_filter.has_output())        choices = list_filter.field_choices(field, request, model_admin)        self.assertIsInstance(choices, list)        self.assertEqual(len(choices), 0)    def test_related_field_ajax_list_filter_with_initial(self):        initial = self.models[1]        request = self.factory.get('url', {'field__id__exact': initial.pk})        field, lookup_params, model, model_admin, field_path = self.get_related_field_ajax_list_filter_params()        list_filter = RelatedFieldAjaxListFilter(field, request, lookup_params, model, model_admin, field_path)        self.assertTrue(list_filter.has_output())        choices = list_filter.field_choices(field, request, model_admin)        self.assertIsInstance(choices, list)        self.assertEqual(len(choices), 1)        self.assertEqual(choices[0], (initial.pk, smart_text(initial)))
 |