Esempio n. 1
0
def test_custom_delete_page_view_deletes_variants(rf, segmented_page, user):
    post_request = rf.post('/')
    user.is_superuser = True
    rf.user = user
    canonical_page = segmented_page.personalisation_metadata.canonical_page
    canonical_page_variant = canonical_page.personalisation_metadata
    assert canonical_page_variant

    variants = Page.objects.filter(pk__in=(
        canonical_page.personalisation_metadata.variants_metadata.values_list('variant_id', flat=True)
    ))
    variants_metadata = canonical_page.personalisation_metadata.variants_metadata
    # Make sure there are variants that exist in the database.
    assert len(variants.all())
    assert len(variants_metadata.all())
    wagtail_hooks.delete_related_variants(
        post_request, segmented_page.personalisation_metadata.canonical_page
    )
    with pytest.raises(canonical_page.DoesNotExist):
        canonical_page.refresh_from_db()
    with pytest.raises(canonical_page_variant.DoesNotExist):
        canonical_page_variant.refresh_from_db()
    # Make sure all the variant pages have been deleted.
    assert not len(variants.all())
    assert not len(variants_metadata.all())
def test_custom_delete_page_view_deletes_variants_of_child_pages(rf, segmented_page, user):
    """
    Regression test for deleting pages that have children with variants
    """
    post_request = rf.post('/')
    user.is_superuser = True
    rf.user = user
    canonical_page = segmented_page.personalisation_metadata.canonical_page
    # Create a child with a variant
    child_page = ContentPageFactory(parent=canonical_page, slug='personalised-child')
    child_page.personalisation_metadata.copy_for_segment(segmented_page.personalisation_metadata.segment)
    # A ProtectedError would be raised if the bug persists
    wagtail_hooks.delete_related_variants(
        post_request, canonical_page
    )
Esempio n. 3
0
def test_custom_delete_page_view_does_not_trigger_for_variants(
    rf,
    segmented_page
):
    assert (
        wagtail_hooks.delete_related_variants(rf.get('/'), segmented_page)
    ) is None
Esempio n. 4
0
def test_custom_delete_page_view_triggers_for_canonical_pages(
    rf,
    segmented_page
):
    assert (
        wagtail_hooks.delete_related_variants(
            rf.get('/'),
            segmented_page.personalisation_metadata.canonical_page
        )
    ) is not None