| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import datetime
-
- import pytest
- from django.utils import timezone
-
- from oscar.apps.dashboard.reviews import views
- from oscar.core.loading import get_model
- from oscar.test.factories.catalogue import ProductReviewFactory
- from oscar.test.factories.customer import UserFactory
-
- now = timezone.now()
-
-
- ProductReview = get_model('reviews', 'ProductReview')
-
- keywords = [
- 'aaaaa',
- 'bbbbb',
- 'ccccc',
- 'ddddd'
- ]
-
-
- @pytest.fixture
- def reviews():
- for i in range(10):
- keyword = keywords[i % len(keywords)]
- date_created = now - datetime.timedelta(days=i)
- user = UserFactory(
- first_name=keyword
- )
- review = ProductReviewFactory(
- score=i % 5,
- title='review title product %d %s' % (i, keyword),
- body='review body product %d %s' % (i, keyword),
- status=i % 3,
- user=user,
- )
- review.date_created = date_created
- review.save()
- return ProductReview.objects.all()
-
-
- @pytest.fixture
- def reviewlistview(rf, reviews):
- view = views.ReviewListView()
- view.request = rf.get('/')
- return view
-
-
- @pytest.mark.django_db
- class TestReviewListView(object):
-
- def test_get(self, rf):
- request = rf.get('/')
- view = views.ReviewListView.as_view()
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(keyword='test', status='', date_from='', date_to='', name=''))
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(keyword='', status='0', date_from='', date_to='', name=''))
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(
- keyword='test', status='', date_from='2017-01-01', date_to='', name=''))
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(
- keyword='test', status='', date_from='', date_to='2017-01-01', name=''))
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(
- keyword='test', status='', date_from='2017-01-01', date_to='2017-12-31', name=''))
- response = view(request)
- assert response.status_code == 200
-
- request = rf.get('/', data=dict(
- keyword='', status='', date_from='', date_to='', name='test'))
- response = view(request)
- assert response.status_code == 200
-
- def test_add_filter_status(self, rf, reviews):
- request = rf.get('/', data=dict(status=ProductReview.FOR_MODERATION))
- view = views.ReviewListView.as_view()
- response = view(request)
- view = response.context_data['view']
- qs = view.get_queryset()
- assert qs.count() == 4
-
- request = rf.get('/', data=dict(status=ProductReview.APPROVED))
- view = views.ReviewListView.as_view()
- response = view(request)
- view = response.context_data['view']
- qs = view.get_queryset()
- assert qs.count() == 3
-
- request = rf.get('/', data=dict(status=ProductReview.REJECTED))
- view = views.ReviewListView.as_view()
- response = view(request)
- view = response.context_data['view']
- qs = view.get_queryset()
- assert qs.count() == 3
-
- def test_add_filter_keyword(self, rf, reviews):
- expect = {
- 'aaaaa': 3,
- 'bbbbb': 3,
- 'ccccc': 2,
- 'ddddd': 2,
- }
-
- for keyword in expect:
- request = rf.get('/', data=dict(keyword=keyword))
- view = views.ReviewListView.as_view()
- response = view(request)
- view = response.context_data['view']
- qs = view.get_queryset()
- assert qs.count() == expect[keyword]
- assert 'with keyword matching' in view.desc_ctx['kw_filter']
- assert keyword in view.desc_ctx['kw_filter']
-
- def test_add_filter_name(self, rf, reviews):
- expect = {
- 'aaaaa': 3,
- 'bbbbb': 3,
- 'ccccc': 2,
- 'ddddd': 2,
- }
-
- for keyword in expect:
- name = '%s winterbottom' % keyword
- request = rf.get('/', data=dict(name=name))
- view = views.ReviewListView.as_view()
- response = view(request)
- view = response.context_data['view']
- qs = view.get_queryset()
- assert qs.count() == expect[keyword]
- assert 'with customer name matching' in view.desc_ctx['name_filter']
- assert keyword in view.desc_ctx['name_filter']
-
- def test_get_date_from_to_queryset(self, reviewlistview):
- view = reviewlistview
-
- date_from = now - datetime.timedelta(days=6)
- date_to = now - datetime.timedelta(days=2)
-
- qs = view.get_queryset()
- assert qs.count() == 10
-
- qs = view.get_date_from_to_queryset(None, None)
- assert qs.count() == 10
- assert view.desc_ctx['date_filter'] == ''
-
- qs = view.get_date_from_to_queryset(date_from, None, qs)
- assert qs.count() == 7
- assert view.desc_ctx['date_filter'].startswith(' created after')
-
- qs = view.get_date_from_to_queryset(None, date_to, qs)
- assert qs.count() == 5
- assert view.desc_ctx['date_filter'].startswith(' created before')
-
- qs = view.get_date_from_to_queryset(date_from, date_to, qs)
- assert qs.count() == 5
- assert view.desc_ctx['date_filter'].startswith(' created between')
|