Skip to content

Commit 78712d7

Browse files
committed
Revert changes to impersonate_other_page that stop it from replacing title/url_path, and fix breadcrumb logic
1 parent 2550c21 commit 78712d7

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

experiments/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,5 @@ def impersonate_other_page(page, other):
5353

5454
page.path = other.path
5555
page.depth = other.depth
56+
page.url_path = other.url_path
57+
page.title = other.title

tests/models.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from django.db import models
22
from modelcluster.fields import ParentalKey
3-
from wagtail.models import Orderable, Page
3+
from wagtail.models import Orderable, Page, Site
44

55

66
class SimplePage(Page):
77
body = models.TextField()
88

99
def get_context(self, request):
1010
context = super(SimplePage, self).get_context(request)
11-
context['breadcrumb'] = self.get_ancestors(inclusive=True)
11+
site = Site.find_for_request(request)
12+
context['breadcrumb'] = self.get_ancestors(inclusive=True).filter(depth__gte=site.root_page.depth)
1213
return context
1314

1415

tests/tests.py

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from django.contrib.auth.models import User
44
from django.test import TestCase
55
from django.urls import reverse
6-
from unittest import skipIf
76
from wagtail.models import Page
87

98
from experiments.models import Experiment, ExperimentHistory
@@ -210,27 +209,21 @@ def test_draft_status(self):
210209
self.client.get('/signup-complete/')
211210
self.assertEqual(ExperimentHistory.objects.filter(experiment=self.experiment).count(), 0)
212211

213-
def test_alternative_title_is_used(self):
214-
self.experiment.status = 'completed'
215-
self.experiment.winning_variation = self.homepage_alternative_2
216-
self.experiment.save()
217-
212+
def test_original_title_is_preserved(self):
218213
session = self.client.session
219-
session['experiment_user_id'] = '33333333-3333-3333-3333-333333333333'
214+
session['experiment_user_id'] = '11111111-1111-1111-1111-111111111111'
220215
session.save()
216+
response = self.client.get('/')
217+
self.assertContains(response, "<title>Home</title>")
221218

219+
# User receiving an alternative version should see the title as "Home", not "Homepage alternative 1"
220+
session.clear()
221+
session['experiment_user_id'] = '33333333-3333-3333-3333-333333333333'
222+
session.save()
222223
response = self.client.get('/')
223-
self.assertEqual(response.status_code, 200)
224-
self.assertContains(response, 'Homepage alternative 2')
224+
self.assertContains(response, "<title>Home</title>")
225225

226-
@skipIf(DJANGO_VERSION >= '3.2.0', 'breadcrumbs not included in request.site')
227226
def test_original_tree_position_is_preserved(self):
228-
'''
229-
This test fails with django4 because the "request.site" no
230-
longer reports the depth. Is there another way
231-
to verify the original tree position is preserved?
232-
'''
233-
234227
# Alternate version should position itself in the tree as if it were the control page
235228
session = self.client.session
236229
session['experiment_user_id'] = '33333333-3333-3333-3333-333333333333'
@@ -251,7 +244,7 @@ def test_completed_status(self):
251244
response = self.client.get('/')
252245

253246
self.assertEqual(response.status_code, 200)
254-
self.assertContains(response, 'Homepage alternative 2')
247+
self.assertContains(response, "<title>Home</title>")
255248
self.assertContains(response, "What do you want?")
256249

257250

@@ -496,4 +489,4 @@ def test_preview(self):
496489
f'/{self.admin_home}/experiments/experiment/report/preview/{self.experiment.pk}/{self.homepage_alternative_2.pk}/'
497490
)
498491
self.assertEqual(response.status_code, 200)
499-
self.assertContains(response, '<title>Homepage alternative 2</title>')
492+
self.assertContains(response, '<title>Home</title>')

0 commit comments

Comments
 (0)