如何测试 Wagtail 中页面的顺序?
How to test order of Pages in Wagtail?
我有一个 Wagtail 网站,并且我有一个介于两种页面类型之间的 parent/child 结构:
class FrontPage(Page):
subpage_types = ["InnerPage"]
def get_next_page(self):
return self.get_children().live().first()
class InnerPage(Page):
parent_page_types = ["FrontPage"]
def get_next_page(self):
return self.get_next_siblings().live().first()
Admin 用户可以将 InnerPage
s 拖到他们在 Wagtail Admin 中选择的顺序中,这很棒。 FrontPage.get_children()
然后按该顺序获取内页,get_next_page()
方法 return 按相同顺序获取下一页。
我想编写测试来检查 get_next_page()
方法是否 return 正确的页面。但是在为测试创建页面时,我不知道如何为页面分配顺序。我可以看到,在执行 SQL 查询 wagtailcore_page.path
的 Wagtail 订单时,但我不确定在以编程方式创建 InnerPage
对象时如何影响它。
假设您在测试中创建页面时使用 parent_page.add_child(instance=new_page)
- add_child
method 将创建新页面作为顺序中的最后一个子页面,因此您只需要确保创建它们按照您希望它们出现的顺序排列。
要更好地控制新页面在排序中的插入位置,您可以改用 add_sibling
method:
parent_page = FrontPage.objects.first()
last_child = InnerPage(title='last child')
parent_page.add_child(instance=last_child
first_child = InnerPage(title='first child')
# insert first_child immediately before last_child
last_child.add_sibling(pos='left', instance=first_child)
我有一个 Wagtail 网站,并且我有一个介于两种页面类型之间的 parent/child 结构:
class FrontPage(Page):
subpage_types = ["InnerPage"]
def get_next_page(self):
return self.get_children().live().first()
class InnerPage(Page):
parent_page_types = ["FrontPage"]
def get_next_page(self):
return self.get_next_siblings().live().first()
Admin 用户可以将 InnerPage
s 拖到他们在 Wagtail Admin 中选择的顺序中,这很棒。 FrontPage.get_children()
然后按该顺序获取内页,get_next_page()
方法 return 按相同顺序获取下一页。
我想编写测试来检查 get_next_page()
方法是否 return 正确的页面。但是在为测试创建页面时,我不知道如何为页面分配顺序。我可以看到,在执行 SQL 查询 wagtailcore_page.path
的 Wagtail 订单时,但我不确定在以编程方式创建 InnerPage
对象时如何影响它。
假设您在测试中创建页面时使用 parent_page.add_child(instance=new_page)
- add_child
method 将创建新页面作为顺序中的最后一个子页面,因此您只需要确保创建它们按照您希望它们出现的顺序排列。
要更好地控制新页面在排序中的插入位置,您可以改用 add_sibling
method:
parent_page = FrontPage.objects.first()
last_child = InnerPage(title='last child')
parent_page.add_child(instance=last_child
first_child = InnerPage(title='first child')
# insert first_child immediately before last_child
last_child.add_sibling(pos='left', instance=first_child)