123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- from django.contrib import admin
- from django.test import TestCase, RequestFactory
- from django.utils.encoding import smart_text
- from jet.filters import RelatedFieldAjaxListFilter
- from jet.tests.models import RelatedToTestModel, TestModel
- try:
- from django.contrib.admin.utils import get_fields_from_path
- except ImportError: # Django 1.6
- from django.contrib.admin.util import get_fields_from_path
- class 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)))
|