def test_delegate_to(self): """Test the view delegate feature.""" c = self.get_admin_client() page_data = self.get_new_page_data() page_data['title'] = 'delegate' page_data['slug'] = 'delegate' response = c.post('/admin/pages/page/add/', page_data) self.assertRedirects(response, '/admin/pages/page/') page = Page.objects.from_path('delegate', None) from pages import urlconf_registry as reg reg.register_urlconf('test', 'pages.testproj.documents.urls', label='test') page.delegate_to = 'test' page.save() response = c.get(self.get_page_url('delegate')) self.assertEqual(response.status_code, 200) from pages.testproj.documents.models import Document doc = Document(title='doc title 1', text='text', page=page) doc.save() url = self.get_page_url('delegate/doc-%d' % doc.id) self.assertTrue(str(doc.id) in url) response = c.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, "doc title 1") reg.registry = []
def test_path_too_long(self): """Test that the CMS try to resolve the whole page path to find a suitable sub path with delegation.""" page1 = self.new_page(content={'slug': 'page1'}) page2 = self.new_page(content={'slug': 'page2'}) from pages import urlconf_registry as reg reg.register_urlconf('test2', 'pages.testproj.documents.urls', label='test') page2.delegate_to = 'test2' page1.delegate_to = 'test2' page1.save() page2.save() page2.parent = page1 page2.save() from pages.testproj.documents.models import Document doc = Document(title='doc title 1', text='text', page=page1) doc.save() req = get_request_mock() self.set_setting("PAGE_HIDE_ROOT_SLUG", False) page1.invalidate() page2.invalidate() def _get_context_page(path): return details(req, path, 'en-us') self.assertEqual(_get_context_page('/').status_code, 200) self.assertEqual(_get_context_page('/page1/').status_code, 200) self.assertEqual(_get_context_page('/page1/').status_code, 200) self.assertEqual(_get_context_page('/page1/page2').status_code, 200) self.assertEqual(_get_context_page('/page1/page2/').status_code, 200) self.assertEqual( _get_context_page('/page1/page2/doc-%d' % doc.id).status_code, 200) self.assertRaises(Http404, _get_context_page, '/page1/page-wrong/doc-%d' % doc.id) reg.registry = []