-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8a46015
commit 1cd3c0c
Showing
1 changed file
with
98 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
from tbx.core.factories import HomePageFactory | ||
from tbx.divisions.factories import DivisionPageFactory | ||
from tbx.services.factories import ServiceAreaPageFactory | ||
from wagtail.models import Site | ||
from wagtail.test.utils import WagtailPageTestCase | ||
|
||
|
||
class TestDivisionMixin(WagtailPageTestCase): | ||
def setUp(self): | ||
super().setUp() | ||
|
||
# Set up the site & homepage. | ||
site = Site.objects.get(is_default_site=True) | ||
root = site.root_page.specific | ||
self.home = HomePageFactory(parent=root) | ||
|
||
site.root_page = self.home | ||
site.save() | ||
|
||
# Set up a services "index" page. | ||
self.services = ServiceAreaPageFactory(title="Services", parent=self.home) | ||
self.service_1 = ServiceAreaPageFactory(title="Service 1", parent=self.services) | ||
self.service_2 = ServiceAreaPageFactory( | ||
title="Service 2", parent=self.service_1 | ||
) | ||
|
||
# Set up a division page. | ||
self.division_1 = DivisionPageFactory(parent=self.home) | ||
self.division_2 = DivisionPageFactory(title="Public sector", parent=self.home) | ||
|
||
def test_division_selected(self): | ||
""" | ||
For a page that has division selected, | ||
get_division should return the selected page. | ||
""" | ||
self.service_1.division = self.division_1 | ||
self.service_1.save() | ||
|
||
service_3 = ServiceAreaPageFactory( | ||
division=self.division_2, | ||
parent=self.service_2, | ||
title="Service 3", | ||
) | ||
|
||
self.assertEqual(self.service_1.get_division(), self.division_1) | ||
self.assertEqual(service_3.get_division(), self.division_2) | ||
|
||
def test_division_selected_on_ancestor(self): | ||
""" | ||
For a page that does not have a division selected | ||
but an ancestor page has a division selected, | ||
get_division should return the ancestor's selected page. | ||
""" | ||
self.service_1.division = self.division_1 | ||
self.service_1.save() | ||
|
||
service_3 = ServiceAreaPageFactory( | ||
parent=self.service_2, | ||
title="Service 3", | ||
) | ||
|
||
self.assertEqual(self.service_1.get_division(), self.division_1) | ||
self.assertEqual(self.service_2.get_division(), self.division_1) | ||
self.assertEqual(service_3.get_division(), self.division_1) | ||
|
||
def test_division_as_ancestor(self): | ||
""" | ||
For a page that does not have a division selected | ||
but an ancestor page is a DivisionPage, | ||
get_division should return the ancestor DivisionPage. | ||
""" | ||
service_a = ServiceAreaPageFactory( | ||
title="Service A", | ||
parent=self.division_1, | ||
) | ||
service_b = ServiceAreaPageFactory( | ||
title="Service A", | ||
parent=service_a, | ||
) | ||
|
||
self.assertEqual(service_a.get_division(), self.division_1) | ||
self.assertEqual(service_b.get_division(), self.division_1) | ||
|
||
def test_no_division(self): | ||
""" | ||
For a page that does not have a division selected | ||
and is not a descendant of a DivisionPage | ||
nor has an ancestor with a selected division, | ||
get_division should return None. | ||
""" | ||
service_3 = ServiceAreaPageFactory( | ||
parent=self.service_2, | ||
title="Service 3", | ||
) | ||
|
||
self.assertIsNone(self.service_1.get_division()) | ||
self.assertIsNone(self.service_2.get_division()) | ||
self.assertIsNone(service_3.get_division()) |