diff --git a/tests/fixtures.py b/tests/fixtures.py index c79163d..35c5661 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -11,7 +11,9 @@ from tests.factories.site import SiteFactory @pytest.fixture(scope='function') def site(): - site = SiteFactory(is_default_site=True) + root_page = ContentPageFactory(parent=None, slug='') + site = SiteFactory(is_default_site=True, root_page=root_page) + page1 = ContentPageFactory(parent=site.root_page, slug='page-1') page2 = ContentPageFactory(parent=site.root_page, slug='page-2') ContentPageFactory(parent=page1, slug='page-1-1') @@ -21,7 +23,7 @@ def site(): @pytest.fixture def segmented_page(site): - page = ContentPageFactory(parent=site.root_page) + page = ContentPageFactory(parent=site.root_page, slug='personalised') segment = SegmentFactory() return page.personalisable_metadata.copy_for_segment(segment) diff --git a/tests/unit/test_wagtail_hooks.py b/tests/unit/test_wagtail_hooks.py new file mode 100644 index 0000000..14df050 --- /dev/null +++ b/tests/unit/test_wagtail_hooks.py @@ -0,0 +1,41 @@ +import pytest + +from wagtail_personalisation import adapters, wagtail_hooks + + +@pytest.mark.django_db +def test_serve_variation_no_variant(site, rf): + page = site.root_page + request = rf.get('/') + args = tuple() + kwargs = {} + + result = wagtail_hooks.serve_variation(page, request, args, kwargs) + assert result is None + + +@pytest.mark.django_db +def test_serve_variation_with_variant_no_segment(site, rf, segmented_page): + request = rf.get('/') + args = tuple() + kwargs = {} + + page = segmented_page.personalisable_metadata.canonical_page + result = wagtail_hooks.serve_variation(page, request, args, kwargs) + assert result is None + + +@pytest.mark.django_db +def test_serve_variation_with_variant_segmented(site, rf, segmented_page): + request = rf.get('/') + args = tuple() + kwargs = {} + + page = segmented_page.personalisable_metadata.canonical_page + segment = segmented_page.personalisable_metadata.segment + + adapter = adapters.get_segment_adapter(request) + adapter.set_segments([segment]) + + result = wagtail_hooks.serve_variation(page, request, args, kwargs) + assert result.status_code == 200