Utilities for programmatically building page trees in Wagtail for automated tests, default site structures, and more.
Wagtail Foliage supports:
- Python 3.4, 3.5, 3.6, and 3.7
- Django 1.11, 2.0, and 2.1
- Wagtail 1.13, 2.3, and 2.4
These are the currently supported versions for each project as of December 2018, excepting the exclusion of Python 2.7 from this list.
pip install wagtail-foliage
from django.db import TestCase
from foliage.contextmanagers import page_tree
from myapp.models import HomePage, InsidePage
class MyAppTestCase(TestCase):
def test_with_pages(self):
PAGES = [
(HomePage(title='Home Page'), [
InsidePage(title='Inside Page'),
(InsidePage(title='Inside Page With Children'), [
InsidePage(title='Third Level Page'),
InsidePage(title='Another Third Level Page')
])
])
]
with page_tree(PAGES):
# Tests that rely on that page tree go here. The context manager
# will automatically set the top level page as the Wagtail site's
# root page
from django.db import TestCase
from foliage.contextmanagers import page_tree
from myapp.models import HomePage, InsidePage
PAGES = [
(HomePage(title='Home Page'), [
InsidePage(title='Inside Page'),
(InsidePage(title='Inside Page With Children'), [
InsidePage(title='Third Level Page'),
InsidePage(title='Another Third Level Page')
])
])
]
class MyAppTestCase(TestCase):
@page_tree(PAGES)
def test_with_pages(self):
# Tests that rely on that page tree go here. The context manager
# will automatically set the top level page as the Wagtail site's
# root page
from foliage.utils import build_page_tree
from myapp.models import HomePage, InsidePage
new_pages = build_page_tree([
(HomePage(title='Home Page'), [
InsidePage(title='Inside Page'),
(InsidePage(title='Inside Page With Children'), [
InsidePage(title='Third Level Page'),
InsidePage(title='Another Third Level Page')
])
])
])