def setUp(self): root = Page.objects.get(pk=1) root_a = Page( title='Home A', slug='home-a') root.add_child(instance=root_a) root_b = Page( title='Home B', slug='home-b') root.add_child(instance=root_b) self.index_a = NewsIndex(title='News A', slug='news-a') root_a.add_child(instance=self.index_a) self.index_b = NewsIndex(title='News B', slug='news-b') root_b.add_child(instance=self.index_b) self.site_a = Site.objects.create( hostname='site-a.com', root_page=root_a) self.site_b = Site.objects.create( hostname='site-b.org', root_page=root_b) self.item_a = NewsItem.objects.create( newsindex=self.index_a, title='Post A', date=dt(2015, 8, 1)) self.item_b = NewsItem.objects.create( newsindex=self.index_b, title='Post B', date=dt(2015, 8, 2))
def test_slug_scopes_to_site(self): home_page = Page.objects.get(slug="home") article_index_one = Page(title="First Index", slug="firstindex") article_index_two = Page(title="Second Index", slug="secondindex") home_page.add_child(instance=article_index_one) home_page.add_child(instance=article_index_two) article_one = Page(title="Article One", slug="articleone") article_two = Page(title="Article Two", slug="articletwo") article_index_one.add_child(instance=article_one) article_index_two.add_child(instance=article_two) result = slug_matches_one_page_exactly("/shows/articleone/", article_index_two) assert result is None
def test_multiple_articles_with_same_slug_returns_none(self): home_page = Page.objects.get(slug="home") article_index_one = Page(title="First Index", slug="firstindex") article_index_two = Page(title="Second Index", slug="secondindex") home_page.add_child(instance=article_index_one) home_page.add_child(instance=article_index_two) article_one = Page(title="Workzone with Bridget Masinga", slug="workzonewithbridgetmasinga") article_two = Page(title="Workzone with Bridget Masinga", slug="workzonewithbridgetmasinga") article_index_one.add_child(instance=article_one) article_index_two.add_child(instance=article_two) result = slug_matches_one_page_exactly("/shows/workzonewithbridgetmasinga/", home_page) assert result is None
def test_slug_scopes_to_site(self): home_page = Page.objects.get(slug='home') article_index_one = Page(title='First Index', slug='firstindex') article_index_two = Page(title='Second Index', slug='secondindex') home_page.add_child(instance=article_index_one) home_page.add_child(instance=article_index_two) article_one = Page(title='Article One', slug='articleone') article_two = Page(title='Article Two', slug='articletwo') article_index_one.add_child(instance=article_one) article_index_two.add_child(instance=article_two) result = slug_matches_one_page_exactly('/shows/articleone/', article_index_two) assert result is None
def test_multiple_articles_with_same_slug_returns_none(self): home_page = Page.objects.get(slug='home') article_index_one = Page(title='First Index', slug='firstindex') article_index_two = Page(title='Second Index', slug='secondindex') home_page.add_child(instance=article_index_one) home_page.add_child(instance=article_index_two) article_one = Page(title='Workzone with Bridget Masinga', slug='workzonewithbridgetmasinga') article_two = Page(title='Workzone with Bridget Masinga', slug='workzonewithbridgetmasinga') article_index_one.add_child(instance=article_one) article_index_two.add_child(instance=article_two) result = slug_matches_one_page_exactly( '/shows/workzonewithbridgetmasinga/', home_page) assert result is None
def build_page_tree( # Would that mypy supported recursive types tree: Iterable[Tuple[Page, Iterable]], root: Page = None) -> List[Page]: """ Construct a page tree in the database. Accepts a tree in the form: [ (Page, [ (Page, [...]), (Page, [...]), Page, ]), ] where ``[...]`` is a nested iterable of (Page, children) tuples or bare page instances. """ created = [] for node in tree: if isinstance(node, Page): # If `node` is a bare page, it has no children page = node children = [] else: # Otherwise assume it is a (Page, children) tuple page, children = node if root: root.add_child(instance=page) else: type(page).add_root(instance=page) created += [page] created += build_page_tree(children, root=page) return created