| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- from datetime import datetime, timedelta
-
- 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)
-
- get(ProductReview, user=user1, status=0)
- get(ProductReview, user=user2, status=0)
- get(ProductReview, user=user2, status=0)
-
- assert(ProductReview.objects.count() == 3)
-
- post_params = {
- 'status': 1,
- 'selected_review': [3, 2],
- 'action': ['update_selected_review_status'],
- }
- 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')
-
- get(ProductReview, user=user1, status=0)
- get(ProductReview, user=user2, status=0)
- 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')
- 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.assertQuerysetContains(response.context['review_list'],
- [review1, review2])
-
- def assertQuerysetContains(self, qs, items):
- qs_ids = [obj.id for obj in qs]
- item_ids = [item.id for item in items]
- self.assertItemsEqual(qs_ids, item_ids)
-
- def test_filter_reviews_by_date(self):
- now = datetime.now()
- review1 = get(ProductReview)
- review2 = get(ProductReview)
- review2.date_created = now - timedelta(days=2)
- review2.save()
- review3 = get(ProductReview)
- review3.date_created = now - timedelta(days=10)
- review3.save()
-
- url = reverse('dashboard:reviews-list')
- response = self.client.get(url, {'date_from': now - timedelta(days=5)})
- self.assertQuerysetContains(response.context['review_list'],
- [review1, review2])
-
- response = self.client.get(url, {'date_to': now - timedelta(days=5)})
- self.assertQuerysetContains(response.context['review_list'],
- [review3])
-
- response = self.client.get(url, {
- 'date_from': now - timedelta(days=12),
- 'date_to': now - timedelta(days=9)
- })
- self.assertQuerysetContains(response.context['review_list'],
- [review3])
-
- def test_filter_reviews_by_status(self):
- url = reverse('dashboard:reviews-list')
-
- user1 = get(User)
- user2 = get(User)
-
- review1 = get(ProductReview, user=user1, status=1)
- review2 = get(ProductReview, user=user2, status=0)
- review3 = get(ProductReview, user=user2, status=2)
-
- response = self.client.get(url, {'status': 0})
- self.assertItemsEqual(response.context['review_list'], [review2])
-
- response = self.client.get(url, {'status': 1})
- self.assertItemsEqual(response.context['review_list'], [review1])
-
- response = self.client.get(url, {'status': 2})
- self.assertItemsEqual(response.context['review_list'], [review3])
-
- response = self.client.get(url, {'status': 3})
- reviews = response.context['review_list']
- self.assertTrue(review1 in reviews)
|