forked from mozmeao/snippets-service
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_feed.py
70 lines (58 loc) · 3.53 KB
/
test_feed.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from datetime import datetime
from unittest.mock import Mock, patch
from django.http.request import QueryDict
from snippets.base import models
from snippets.base.feed import ASRSnippetFilter, SnippetsFeed
from snippets.base.tests import ASRSnippetFactory, TestCase
class ASRSnippetFilterTests(TestCase):
def test_base(self):
snippet1, snippet2 = ASRSnippetFactory.create_batch(2)
snippet3 = ASRSnippetFactory.create(publish_start=datetime(2019, 1, 1))
snippet4 = ASRSnippetFactory.create(publish_end=datetime(2019, 2, 2))
filtr = ASRSnippetFilter(QueryDict(), queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1, snippet2, snippet3, snippet4]), set(filtr.qs))
def test_only_scheduled_true(self):
snippet1 = ASRSnippetFactory.create(publish_end=datetime(2019, 2, 2))
snippet2 = ASRSnippetFactory.create(publish_start=datetime(2019, 2, 2))
snippet3 = ASRSnippetFactory.create(publish_start=datetime(2019, 2, 2),
publish_end=datetime(2019, 2, 3))
ASRSnippetFactory.create(publish_start=None, publish_end=None)
filtr = ASRSnippetFilter(QueryDict(query_string='only_scheduled=true'),
queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1, snippet2, snippet3]), set(filtr.qs))
def test_only_scheduled_false(self):
snippet1 = ASRSnippetFactory.create(publish_start=None, publish_end=None)
ASRSnippetFactory.create(publish_end=datetime(2019, 2, 2))
filtr = ASRSnippetFilter(QueryDict(query_string='only_scheduled=false'),
queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1]), set(filtr.qs))
def test_only_scheduled_all(self):
snippet1, snippet2 = ASRSnippetFactory.create_batch(2)
snippet3 = ASRSnippetFactory.create(publish_end=datetime(2019, 2, 2))
filtr = ASRSnippetFilter(QueryDict(query_string='only_scheduled=all'),
queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1, snippet2, snippet3]), set(filtr.qs))
def test_name(self):
snippet1 = ASRSnippetFactory.create(name='foo bar foo')
ASRSnippetFactory.create(name='foo lala foo')
filtr = ASRSnippetFilter(QueryDict(query_string='name=bar'),
queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1]), set(filtr.qs))
def test_locale(self):
snippet1 = ASRSnippetFactory.create(locale='xx')
snippet2 = ASRSnippetFactory.create(locale='fr')
ASRSnippetFactory.create(locale='de')
filtr = ASRSnippetFilter(QueryDict(query_string='locale=xx,fr'),
queryset=models.ASRSnippet.objects.all())
self.assertEqual(set([snippet1, snippet2]), set(filtr.qs))
class SnippetsFeedTests(TestCase):
def test_item_filtering(self):
request = Mock()
request.GET = {}
with patch('snippets.base.feed.models.ASRSnippet') as ASRSnippetMock:
with patch('snippets.base.feed.ASRSnippetFilter') as ASRSnippetFilterMock:
ASRSnippetMock.objects.filter.return_value.order_by.return_value = 'foo'
SnippetsFeed()(request)
ASRSnippetMock.objects.filter.assert_called_with(for_qa=False,
status=models.STATUS_CHOICES['Published'])
ASRSnippetFilterMock.assert_called_with(request.GET, queryset='foo')