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)