From f898dfe0172a9569f21a11ea74c41ad4a90bde5d Mon Sep 17 00:00:00 2001 From: Kaitlyn Crawford Date: Thu, 22 Feb 2018 16:12:24 +0200 Subject: [PATCH] Actually add tests for segment users view --- tests/unit/test_views.py | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/unit/test_views.py diff --git a/tests/unit/test_views.py b/tests/unit/test_views.py new file mode 100644 index 0000000..b2f3cc2 --- /dev/null +++ b/tests/unit/test_views.py @@ -0,0 +1,55 @@ +import pytest + +from django.contrib.auth.models import Permission +from django.core.urlresolvers import reverse +from wagtail_personalisation.models import Segment +from wagtail_personalisation.rules import VisitCountRule + + +@pytest.mark.django_db +def test_segment_user_data_view_requires_admin_access(site, client, django_user_model): + user = django_user_model.objects.create(username='first') + + segment = Segment(type=Segment.TYPE_STATIC, count=1) + segment.save() + + client.force_login(user) + url = reverse('segment:segment_user_data', args=(segment.id,)) + response = client.get(url) + + assert response.status_code == 302 + assert response.url == '/admin/login/?next=%s' % url + + +@pytest.mark.django_db +def test_segment_user_data_view(site, client, mocker, django_user_model): + user1 = django_user_model.objects.create(username='first') + user2 = django_user_model.objects.create(username='second') + admin_user = django_user_model.objects.create(username='admin') + permission = Permission.objects.get(codename='access_admin') + admin_user.user_permissions.add(permission) + + segment = Segment(type=Segment.TYPE_STATIC, count=1) + segment.save() + segment.static_users.add(user1) + segment.static_users.add(user2) + + rule1 = VisitCountRule(counted_page=site.root_page, segment=segment) + rule2 = VisitCountRule(counted_page=site.root_page.get_last_child(), + segment=segment) + rule1.save() + rule2.save() + + mocker.patch('wagtail_personalisation.rules.VisitCountRule.get_user_info_string', + side_effect=[3, 9, 0, 1]) + + client.force_login(admin_user) + response = client.get( + reverse('segment:segment_user_data', args=(segment.id,))) + + assert response.status_code == 200 + data_lines = response.content.decode().split("\n") + + assert data_lines[0] == 'Username,Visit count - Test page,Visit count - Regular page\r' + assert data_lines[1] == 'first,3,9\r' + assert data_lines[2] == 'second,0,1\r'