-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
tests.py
117 lines (86 loc) · 3.96 KB
/
tests.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
from datetime import datetime, timedelta
from django.test import TestCase
from django.db.models import get_model
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django_dynamic_fixture import get
from oscar.test import ClientTestCase
ProductReview = get_model('reviews', 'productreview')
class ReviewsDashboardTests(ClientTestCase):
is_staff = True
def test_reviews_dashboard_is_accessible_to_staff(self):
url = reverse('dashboard:reviews-list')
response = self.client.get(url)
self.assertIsOk(response)
def test_bulk_editing_review_status(self):
url = reverse('dashboard:reviews-list')
user1 = get(User)
user2 = get(User)
review1 = get(ProductReview, user=user1, status=0)
review2 = get(ProductReview, user=user2, status=0)
review3 = get(ProductReview, user=user2, status=0)
assert(ProductReview.objects.count() == 3)
post_params = {
'status': 1,
'selected_review': [3, 2],
'action': ['update_selected_review_status'],
}
response = self.client.post(url, post_params)
self.assertEquals(ProductReview.objects.get(pk=1).status, 0)
self.assertEquals(ProductReview.objects.get(pk=2).status, 1)
self.assertEquals(ProductReview.objects.get(pk=3).status, 1)
def test_filter_reviews_by_name(self):
url = reverse('dashboard:reviews-list')
user1 = get(User, first_name='Peter', last_name='Griffin')
user2 = get(User, first_name='Lois', last_name='Griffin')
review1 = get(ProductReview, user=user1, status=0)
review2 = get(ProductReview, user=user2, status=0)
review3 = get(ProductReview, user=user2, status=0)
response = self.client.get(url, {'name': 'peter'})
self.assertEquals(len(response.context['review_list']), 1)
self.assertEquals(response.context['review_list'][0].user, user1)
response = self.client.get(url, {'name': 'lois griffin'})
self.assertEquals(len(response.context['review_list']), 2)
for review in response.context['review_list']:
self.assertEquals(review.user, user2)
def test_filter_reviews_by_keyword(self):
url = reverse('dashboard:reviews-list')
user1 = get(User)
user2 = get(User)
review1 = get(ProductReview, user=user1, title='Sexy Review')
review2 = get(ProductReview, user=user2, title='Anry Review',
body='argh')
review3 = get(ProductReview, user=user2, title='Lovely Thing')
response = self.client.get(url, {'keyword': 'argh'})
self.assertItemsEqual(response.context['review_list'], [review2])
response = self.client.get(url, {'keyword': 'review'})
self.assertItemsEqual(
response.context['review_list'],
[review1, review2]
)
def test_filter_reviews_by_date(self):
url = reverse('dashboard:reviews-list')
user1 = get(User)
user2 = get(User)
now = datetime.now()
review1 = get(ProductReview, user=user1)
review1.date_created = now
review1.save()
review2 = get(ProductReview, user=user2)
review2.date_created = now - timedelta(days=2)
review2.save()
review3 = get(ProductReview, user=user2)
review3.date_created = now - timedelta(days=10)
review3.save()
response = self.client.get(url, {'date_from': now - timedelta(days=5)})
self.assertItemsEqual(
response.context['review_list'],
[review1, review2]
)
response = self.client.get(url, {'date_to': now - timedelta(days=5)})
self.assertItemsEqual(response.context['review_list'], [review3])
response = self.client.get(url, {
'date_from': now - timedelta(days=12),
'date_to': now - timedelta(days=9)
})
self.assertItemsEqual(response.context['review_list'], [review3])