Beispiel #1
0
    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)
Beispiel #2
0
    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'))
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)