def test_page_template(self): one = 'template one' two = 'template two' three = 'template three' four = 'template four' page = factories.PageFactory() # Row 1 row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory(template=one) breadbox_block = factories.BreadboxBlockFactory(template=two) models.BlockOrder.objects.create(block=search_filter_block, row=row, order=1) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=2) models.RowOrder.objects.create(page=page, row=row, order=1) # Row 2 row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory(template=three) breadbox_block = factories.BreadboxBlockFactory(template=four) models.BlockOrder.objects.create(block=search_filter_block, row=row, order=1) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=2) models.RowOrder.objects.create(page=page, row=row, order=2) # Confirm that both templates are joined together in the correct order template = page.get_template(self.search_results_request) pattern = '.*%s.*%s.*%s.*%s.*' % (one, two, three, four) self.assertRegexpMatches(template, pattern) # Try a new order. page = factories.PageFactory() # Row 1 row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory(template=one) breadbox_block = factories.BreadboxBlockFactory(template=two) models.BlockOrder.objects.create(block=search_filter_block, row=row, order=2) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=1) models.RowOrder.objects.create(page=page, row=row, order=1) # Row 2 row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory(template=three) breadbox_block = factories.BreadboxBlockFactory(template=four) models.BlockOrder.objects.create(block=search_filter_block, row=row, order=2) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=1) models.RowOrder.objects.create(page=page, row=row, order=2) # Confirm that both templates are joined together in the correct order template = page.get_template(self.search_results_request) pattern = '.*%s.*%s.*%s.*%s.*' % (two, one, four, three) self.assertRegexpMatches(template, pattern)
def test_page_handle_job_detail_redirect(self): page = factories.PageFactory(page_type=models.Page.JOB_DETAIL) # If there's a matching job and the url is correctly formatted # and the job belongs on that site there shouldn't be a redirect. redirect = page.handle_job_detail_redirect(self.job_detail_request, **self.job_detail_kwargs) self.assertIsNone(redirect) # If there is no matching job it should result in a 404. self.assertRaises(Http404, page.handle_job_detail_redirect, self.job_detail_request) # If the url is missing the slugs it should redirect to the # slugified version. redirect = page.handle_job_detail_redirect(self.job_detail_redirect_request, job_id=self.job['guid']) self.assertEqual(self.job_detail_request.path, redirect.url) # If we don't have access to the job on this site it should # redirect to the home page. settings.SITE_BUIDS = settings.SITE_PACKAGES = [100] redirect = page.handle_job_detail_redirect(self.job_detail_request, **self.job_detail_kwargs) self.assertEqual(redirect.url, reverse('home'))
def test_page_all_blocks(self): blocks = [] [blocks.append(factories.ContentBlockFactory()) for x in range(0, 5)] row = factories.RowFactory() [models.BlockOrder.objects.create(row=row, block=block, order=block.id) for block in blocks] [blocks.append(factories.LoginBlockFactory()) for x in range(0, 5)] row2 = factories.RowFactory() [models.BlockOrder.objects.create(row=row2, block=block, order=block.id) for block in blocks] page = factories.PageFactory(sites=(SeoSiteFactory(), )) models.RowOrder.objects.create(page=page, row=row, order=row.id) models.RowOrder.objects.create(page=page, row=row2, order=row2.id) all_blocks = page.all_blocks() all_blocks_ids = [block.id for block in all_blocks] block_ids = [block.id for block in blocks] self.assertItemsEqual(block_ids, all_blocks_ids)
def test_page_handle_search_results_redirect(self): page = factories.PageFactory(page_type=models.Page.SEARCH_RESULTS) # If there are no jobs and no query string it should # redirect to the homepage. self.conn.delete(q='*:*') redirect = page.handle_search_results_redirect(self.search_results_request) self.assertEqual(redirect.url, reverse('home')) # But if there is a query string it should end up on the # no results found page. redirect = page.handle_search_results_redirect(self.search_results_with_q_request) self.assertIsNone(redirect)
def test_page_context(self): row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory() breadbox_block = factories.BreadboxBlockFactory() models.BlockOrder.objects.create(block=search_filter_block, row=row, order=1) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=2) page = factories.PageFactory() models.RowOrder.objects.create(page=page, row=row, order=1) context = page.context(self.search_results_request) keys = context.keys() expected_context = ['widgets', 'breadbox', 'site_description', 'site_title'] for field in expected_context: self.assertIn(field, keys)
def test_page_get_head(self): one = 'head 1' two = 'head 2' three = 'head 3' row = factories.RowFactory() search_filter_block = factories.SearchFilterBlockFactory(head=one) breadbox_block = factories.BreadboxBlockFactory(head=two) models.BlockOrder.objects.create(block=search_filter_block, row=row, order=1) models.BlockOrder.objects.create(block=breadbox_block, row=row, order=2) page = factories.PageFactory(head=three) models.RowOrder.objects.create(page=page, row=row, order=1) head = page.get_head() self.assertRegexpMatches(head, '.*%s.*%s.*%s.*' % (one, two, three)) for js in search_filter_block.required_js(): self.assertIn(js, head)