Skip to content

Commit f02b7f1

Browse files
author
Ryan P Kilby
committed
Add failing test for #4655
1 parent 6d4d4df commit f02b7f1

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

tests/test_filters.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,48 @@ def test_must_call_distinct(self):
645645
)
646646

647647

648+
class Blog(models.Model):
649+
name = models.CharField(max_length=20)
650+
651+
652+
class Entry(models.Model):
653+
blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
654+
headline = models.CharField(max_length=120)
655+
pub_date = models.DateField(null=True)
656+
657+
658+
class BlogSerializer(serializers.ModelSerializer):
659+
class Meta:
660+
model = Blog
661+
fields = '__all__'
662+
663+
664+
class SearchFilterToManyTests(TestCase):
665+
666+
@classmethod
667+
def setUpTestData(cls):
668+
b1 = Blog.objects.create(name='Blog 1')
669+
b2 = Blog.objects.create(name='Blog 2')
670+
671+
Entry.objects.create(blog=b1, headline='Something about Lennon', pub_date=datetime.date(1979, 1, 1))
672+
Entry.objects.create(blog=b1, headline='Another thing about Lennon', pub_date=datetime.date(1979, 6, 1))
673+
674+
Entry.objects.create(blog=b2, headline='Something unrelated', pub_date=datetime.date(1979, 1, 1))
675+
Entry.objects.create(blog=b2, headline='Retrospective on Lennon', pub_date=datetime.date(1990, 6, 1))
676+
677+
def test_multiple_filter_conditions(self):
678+
class SearchListView(generics.ListAPIView):
679+
queryset = Blog.objects.all()
680+
serializer_class = BlogSerializer
681+
filter_backends = (filters.SearchFilter,)
682+
search_fields = ('=name', 'entry__headline', '=entry__pub_date__year')
683+
684+
view = SearchListView.as_view()
685+
request = factory.get('/', {'search': 'Lennon,1979'})
686+
response = view(request)
687+
assert len(response.data) == 1
688+
689+
648690
class OrderingFilterModel(models.Model):
649691
title = models.CharField(max_length=20, verbose_name='verbose title')
650692
text = models.CharField(max_length=100)

0 commit comments

Comments
 (0)