Support Wagtail 4.2 (#1)
Co-authored-by: nick.moreton <nick.moreton@torchbox.com> Co-authored-by: Nick Moreton <nick.moreton@torchbox.com> Reviewed-on: #1
This commit is contained in:
@ -1,35 +1,33 @@
|
||||
import pytest
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.urls import reverse
|
||||
from wagtail.core.models import Page
|
||||
from wagtail.models import Page
|
||||
|
||||
from wagtail_personalisation.models import Segment
|
||||
from wagtail_personalisation.rules import VisitCountRule
|
||||
from wagtail_personalisation.views import (
|
||||
SegmentModelAdmin, SegmentModelDeleteView)
|
||||
from wagtail_personalisation.views import SegmentModelAdmin, SegmentModelDeleteView
|
||||
|
||||
|
||||
@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')
|
||||
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,))
|
||||
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
|
||||
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)
|
||||
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()
|
||||
@ -37,24 +35,28 @@ def test_segment_user_data_view(site, client, mocker, django_user_model):
|
||||
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)
|
||||
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])
|
||||
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,)))
|
||||
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'
|
||||
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"
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
@ -64,9 +66,9 @@ def test_segment_delete_view_delete_instance(rf, segmented_page, user):
|
||||
segment = segmented_page.personalisation_metadata.segment
|
||||
canonical_page = segmented_page.personalisation_metadata.canonical_page
|
||||
variants_metadata = segment.get_used_pages()
|
||||
page_variants = Page.objects.filter(pk__in=(
|
||||
variants_metadata.values_list('variant_id', flat=True)
|
||||
))
|
||||
page_variants = Page.objects.filter(
|
||||
pk__in=(variants_metadata.values_list("variant_id", flat=True))
|
||||
)
|
||||
|
||||
# Make sure all canonical page, variants and variants metadata exist
|
||||
assert canonical_page
|
||||
@ -74,11 +76,10 @@ def test_segment_delete_view_delete_instance(rf, segmented_page, user):
|
||||
assert variants_metadata
|
||||
|
||||
# Delete the segment via the method on the view.
|
||||
request = rf.get('/'.format(segment.pk))
|
||||
request = rf.get("/".format(segment.pk)) # noqa: F523
|
||||
request.user = user
|
||||
view = SegmentModelDeleteView(
|
||||
instance_pk=str(segment.pk),
|
||||
model_admin=SegmentModelAdmin()
|
||||
instance_pk=str(segment.pk), model_admin=SegmentModelAdmin()
|
||||
)
|
||||
view.request = request
|
||||
view.delete_instance()
|
||||
@ -98,13 +99,12 @@ def test_segment_delete_view_delete_instance(rf, segmented_page, user):
|
||||
@pytest.mark.django_db
|
||||
def test_segment_delete_view_raises_permission_denied(rf, segmented_page, user):
|
||||
segment = segmented_page.personalisation_metadata.segment
|
||||
request = rf.get('/'.format(segment.pk))
|
||||
request = rf.get("/".format(segment.pk)) # noqa: F523
|
||||
request.user = user
|
||||
view = SegmentModelDeleteView(
|
||||
instance_pk=str(segment.pk),
|
||||
model_admin=SegmentModelAdmin()
|
||||
instance_pk=str(segment.pk), model_admin=SegmentModelAdmin()
|
||||
)
|
||||
view.request = request
|
||||
message = 'User have no permission to delete variant page objects.'
|
||||
message = "User have no permission to delete variant page objects." # noqa: F841
|
||||
with pytest.raises(PermissionDenied):
|
||||
view.delete_instance()
|
||||
|
Reference in New Issue
Block a user