diff options
| author | Carlton Gibson | 2015-02-10 10:50:35 +0100 | 
|---|---|---|
| committer | Carlton Gibson | 2015-02-10 10:50:35 +0100 | 
| commit | d87bb67d11918683425af1c1d56c0c57f50e81b3 (patch) | |
| tree | 1a2df4d1c2881da1140ee84d4f2ae7b0742bd3fd /tests | |
| parent | 7b639c0cd0676172cc8502e833f5b708f39f9a83 (diff) | |
| download | django-rest-framework-d87bb67d11918683425af1c1d56c0c57f50e81b3.tar.bz2 | |
Failing test case for #1488
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_filters.py | 50 | 
1 files changed, 50 insertions, 0 deletions
| diff --git a/tests/test_filters.py b/tests/test_filters.py index 355f02ce..e7cb0c79 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -429,6 +429,56 @@ class SearchFilterTests(TestCase):          reload_module(filters) +class AttributeModel(models.Model): +    label = models.CharField(max_length=32) + + +class SearchFilterModelM2M(models.Model): +    title = models.CharField(max_length=20) +    text = models.CharField(max_length=100) +    attributes = models.ManyToManyField(AttributeModel) + + +class SearchFilterM2MSerializer(serializers.ModelSerializer): +    class Meta: +        model = SearchFilterModelM2M + + +class SearchFilterM2MTests(TestCase): +    def setUp(self): +        # Sequence of title/text/attributes is: +        # +        # z   abc [1, 2, 3] +        # zz  bcd [1, 2, 3] +        # zzz cde [1, 2, 3] +        # ... +        for idx in range(3): +            label = 'w' * (idx + 1) +            AttributeModel(label=label) + +        for idx in range(10): +            title = 'z' * (idx + 1) +            text = ( +                chr(idx + ord('a')) + +                chr(idx + ord('b')) + +                chr(idx + ord('c')) +            ) +            SearchFilterModelM2M(title=title, text=text).save() +        SearchFilterModelM2M.objects.get(title='zz').attributes.add(1, 2, 3) + +    def test_m2m_search(self): +        class SearchListView(generics.ListAPIView): +            queryset = SearchFilterModelM2M.objects.all() +            serializer_class = SearchFilterM2MSerializer +            filter_backends = (filters.SearchFilter,) +            search_fields = ('=title', 'text', 'attributes__label') + +        view = SearchListView.as_view() +        request = factory.get('/', {'search': 'zz'}) +        response = view(request) +        self.assertEqual(len(response.data), 1) + +  class OrderingFilterModel(models.Model):      title = models.CharField(max_length=20)      text = models.CharField(max_length=100) | 
