def test_get_homepage(self): menu = Menu(id=1, parent=None, weight=1) self.session.add(menu) page_1 = Page(id=2, parent=menu, weight=1, home=True) self.session.add(page_1) page_2 = Page(id=3, parent=menu, weight=2) self.session.add(page_2) page_3 = Page(id=4, parent=menu, weight=3) self.session.add(page_3) page_4 = Page(id=5, parent=menu, weight=4) self.session.add(page_4) self.assertEqual(page_1, Page.get_homepage(self.session)) page_2.home = True with self.assertRaises(MultipleResultsFound): Page.get_homepage(self.session) page_1.home = False self.assertEqual(page_2, Page.get_homepage(self.session)) page_2.home = False self.assertEqual(page_1, Page.get_homepage(self.session)) page_1.home = False section = Section(id=6, parent=menu, weight=5) self.session.add(section) page_1.parent = section page_2.parent = section page_3.parent = section page_4.parent = section self.assertIn(Page.get_homepage(self.session), (page_1, page_2, page_3, page_4))
def test_before_flush(self): en = Language(id=2, lang="en", country="GB", enabled=True) menu = Menu(id=1, weight=1) self.session.add(menu) menu_info = MenuInfo(id=29, label=u"Main Menu", lang=en, node=menu) index = Page(id=2, home=True, parent=menu, weight=1) index_info = PageInfo(id=2, label="Home", title="Home Page", url_part="index", content="<h2>Home Page</h2>", lang=en, node=index) company = Page(id=3, home=True, parent=menu, weight=2) company_info = PageInfo(id=3, label="Company", title="Company", url_part="company", content="<h2>Company</h2>", lang=en, node=company) team = Page(id=4, home=True, parent=company, weight=3) team_info = PageInfo(id=4, label="Team", title="Team", url_part="team", content="<h2>Team</h2>", lang=en, node=team) dummy = Page(id=5, home=True, parent=menu, weight=4) parent_url = '/' + en.lang self.assertEqual(index_info.parent_url, parent_url) index_info_url = parent_url + '/' + index_info.url_part self.assertEqual(index_info.url, index_info_url) self.assertEqual(company_info.parent_url, parent_url) company_info_url = parent_url + '/' + company_info.url_part self.assertEqual(company_info.url, company_info_url) self.assertEqual(team_info.parent_url, company_info.url) team_info_url = company_info.url + '/' + team_info.url_part self.assertEqual(team_info.url, team_info_url) team_info = self.session.query(PageInfo).filter(PageInfo.id == 4).one() self.assertEqual(team_info.url, team_info_url) team.parent = menu self.session.flush() self.assertEqual(team_info.parent_url, parent_url) self.assertEqual(team_info.url, parent_url + '/' + team_info.url_part) team_info.node = dummy self.session.flush() team_info = self.session.query(PageInfo).filter(PageInfo.id == 4).one() self.assertEqual(team_info.url, parent_url + '/' + team_info.url_part)