55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
import pytest
|
|
|
|
from django.contrib.auth.models import Permission
|
|
from django.urls 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', is_superuser=True)
|
|
|
|
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'
|