Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

review_tests.py 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. from datetime import datetime, timedelta
  2. from django.db.models import get_model
  3. from django.core.urlresolvers import reverse
  4. from django.contrib.auth.models import User
  5. from django_dynamic_fixture import get
  6. from oscar.test import ClientTestCase
  7. ProductReview = get_model('reviews', 'productreview')
  8. class ReviewsDashboardTests(ClientTestCase):
  9. is_staff = True
  10. def test_reviews_dashboard_is_accessible_to_staff(self):
  11. url = reverse('dashboard:reviews-list')
  12. response = self.client.get(url)
  13. self.assertIsOk(response)
  14. def test_bulk_editing_review_status(self):
  15. url = reverse('dashboard:reviews-list')
  16. user1 = get(User)
  17. user2 = get(User)
  18. get(ProductReview, user=user1, status=0)
  19. get(ProductReview, user=user2, status=0)
  20. get(ProductReview, user=user2, status=0)
  21. assert(ProductReview.objects.count() == 3)
  22. post_params = {
  23. 'status': 1,
  24. 'selected_review': [3, 2],
  25. 'action': ['update_selected_review_status'],
  26. }
  27. self.client.post(url, post_params)
  28. self.assertEquals(ProductReview.objects.get(pk=1).status, 0)
  29. self.assertEquals(ProductReview.objects.get(pk=2).status, 1)
  30. self.assertEquals(ProductReview.objects.get(pk=3).status, 1)
  31. def test_filter_reviews_by_name(self):
  32. url = reverse('dashboard:reviews-list')
  33. user1 = get(User, first_name='Peter', last_name='Griffin')
  34. user2 = get(User, first_name='Lois', last_name='Griffin')
  35. get(ProductReview, user=user1, status=0)
  36. get(ProductReview, user=user2, status=0)
  37. get(ProductReview, user=user2, status=0)
  38. response = self.client.get(url, {'name': 'peter'})
  39. self.assertEquals(len(response.context['review_list']), 1)
  40. self.assertEquals(response.context['review_list'][0].user, user1)
  41. response = self.client.get(url, {'name': 'lois griffin'})
  42. self.assertEquals(len(response.context['review_list']), 2)
  43. for review in response.context['review_list']:
  44. self.assertEquals(review.user, user2)
  45. def test_filter_reviews_by_keyword(self):
  46. url = reverse('dashboard:reviews-list')
  47. user1 = get(User)
  48. user2 = get(User)
  49. review1 = get(ProductReview, user=user1, title='Sexy Review')
  50. review2 = get(ProductReview, user=user2, title='Anry Review',
  51. body='argh')
  52. get(ProductReview, user=user2, title='Lovely Thing')
  53. response = self.client.get(url, {'keyword': 'argh'})
  54. self.assertItemsEqual(response.context['review_list'], [review2])
  55. response = self.client.get(url, {'keyword': 'review'})
  56. self.assertQuerysetContains(response.context['review_list'],
  57. [review1, review2])
  58. def assertQuerysetContains(self, qs, items):
  59. qs_ids = [obj.id for obj in qs]
  60. item_ids = [item.id for item in items]
  61. self.assertItemsEqual(qs_ids, item_ids)
  62. def test_filter_reviews_by_date(self):
  63. now = datetime.now()
  64. review1 = get(ProductReview)
  65. review2 = get(ProductReview)
  66. review2.date_created = now - timedelta(days=2)
  67. review2.save()
  68. review3 = get(ProductReview)
  69. review3.date_created = now - timedelta(days=10)
  70. review3.save()
  71. url = reverse('dashboard:reviews-list')
  72. response = self.client.get(url, {'date_from': now - timedelta(days=5)})
  73. self.assertQuerysetContains(response.context['review_list'],
  74. [review1, review2])
  75. response = self.client.get(url, {'date_to': now - timedelta(days=5)})
  76. self.assertQuerysetContains(response.context['review_list'],
  77. [review3])
  78. response = self.client.get(url, {
  79. 'date_from': now - timedelta(days=12),
  80. 'date_to': now - timedelta(days=9)
  81. })
  82. self.assertQuerysetContains(response.context['review_list'],
  83. [review3])
  84. def test_filter_reviews_by_status(self):
  85. url = reverse('dashboard:reviews-list')
  86. user1 = get(User)
  87. user2 = get(User)
  88. review1 = get(ProductReview, user=user1, status=1)
  89. review2 = get(ProductReview, user=user2, status=0)
  90. review3 = get(ProductReview, user=user2, status=2)
  91. response = self.client.get(url, {'status': 0})
  92. self.assertItemsEqual(response.context['review_list'], [review2])
  93. response = self.client.get(url, {'status': 1})
  94. self.assertItemsEqual(response.context['review_list'], [review1])
  95. response = self.client.get(url, {'status': 2})
  96. self.assertItemsEqual(response.context['review_list'], [review3])
  97. response = self.client.get(url, {'status': 3})
  98. reviews = response.context['review_list']
  99. self.assertTrue(review1 in reviews)