123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- # pylint: disable=redefined-outer-name,unused-argument
- 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")
|