Exemple #1
0
    def test_data_snapshot_with_optional_fields(self):
        """ Data Snapshot with inquiry and tightness information correctly renders
        fields on a Browse Page"""
        browse_page = BrowsePage(
            title='Browse Page',
            slug='browse',
        )

        # Adds a AUT market to a browse page
        browse_page.content = StreamValue(
            browse_page.content.stream_block,
            [atomic.data_snapshot_with_optional_fields],
            True
        )
        publish_page(child=browse_page)

        response = self.client.get('/browse/')
        self.assertContains(response, '5 million')
        self.assertContains(response, '$64 billion')
        self.assertContains(response, '5% increase')
        self.assertContains(response, 'January 2015')
        self.assertContains(response, 'Loans originated')
        self.assertContains(response, 'Dollar value of new loans')
        self.assertContains(response, 'In year-over-year originations')
        # Should  include inquiry or tightness information
        self.assertContains(response, '7.4% decrease')
        self.assertContains(response, 'In year-over-year inquiries')
        self.assertContains(response, '2.8% increase')
        self.assertContains(response, 'In year-over-year credit tightness')
Exemple #2
0
    def test_answer_context_with_nested_journey_referrer(self):
        """If the referrer is a nested Buying a House journey page,
        breadcrumbs should reflect the BAH page hierarchy."""
        bah_page = BrowsePage(title='Buying a House', slug='owning-a-home')
        helpers.publish_page(child=bah_page)
        journey_path = JOURNEY_PATHS[0]
        journey_page = BrowsePage(title='Journey page',
                                  slug=journey_path.strip('/').split('/')[-1])
        helpers.save_new_page(journey_page, bah_page)
        journey_child_page = BrowsePage(title='Journey child page',
                                        slug='child')
        helpers.save_new_page(journey_child_page, journey_page)
        page = self.page1

        mock_site = mock.Mock()
        mock_site.root_page = HomePage.objects.get(slug='cfgov')
        request = HttpRequest()
        request.META['HTTP_REFERER'] = \
            'https://www.consumerfinance.gov' + journey_path + '/child'
        request.site = mock_site

        context = page.get_context(request)
        breadcrumbs = context['breadcrumb_items']
        self.assertEqual(len(breadcrumbs), 3)
        self.assertEqual(breadcrumbs[0]['title'], 'Buying a House')
        self.assertEqual(breadcrumbs[1]['title'], 'Journey page')
        self.assertEqual(breadcrumbs[2]['title'], 'Journey child page')
Exemple #3
0
    def test_answer_context_with_journey_referrer_and_default_category(self):
        """ If the referrer is a Buying a House journey page and 'mortgages'
        category does not appear on answer page, breadcrumbs should lead
        back to BAH & referrer pages, and category should default to first
        category on answer."""
        bah_page = BrowsePage(title='Buying a House', slug='owning-a-home')
        helpers.publish_page(child=bah_page)
        journey_path = JOURNEY_PATHS[0]
        journey_page = BrowsePage(title='Journey page',
                                  slug=journey_path.strip('/').split('/')[-1])
        helpers.save_new_page(journey_page, bah_page)
        answer = self.answer1234
        page = answer.english_page
        page.category.add(self.category)

        mock_site = mock.Mock()
        mock_site.root_page = HomePage.objects.get(slug='cfgov')
        request = HttpRequest()
        request.META['HTTP_REFERER'] = \
            'https://www.consumerfinance.gov' + journey_path
        request.site = mock_site

        context = page.get_context(request)
        breadcrumbs = context['breadcrumb_items']
        self.assertEqual(len(breadcrumbs), 2)
        self.assertEqual(breadcrumbs[0]['title'], 'Buying a House')
        self.assertEqual(breadcrumbs[1]['title'], 'Journey page')
        self.assertEqual(context['category'], self.category)
Exemple #4
0
 def setUp(self):
     self.request = mock.MagicMock()
     self.browse_page1 = BrowsePage(title='Browse page 1')
     self.browse_page2 = BrowsePage(title='Browse page 2')
     helpers.publish_page(child=self.browse_page1)
     helpers.publish_page(child=self.browse_page2)
     self.child_of_browse_page1 = BrowsePage(title='Child of browse page 1')
     self.child_of_browse_page2 = BrowsePage(title='Child of browse page 2')
     helpers.save_new_page(self.child_of_browse_page1, self.browse_page1)
     helpers.save_new_page(self.child_of_browse_page2, self.browse_page2)
Exemple #5
0
    def test_doesnt_pull_in_media_for_nonexistent_child_blocks(self):
        page = BrowsePage()
        page.content = blocks.StreamValue(page.content.stream_block, [
            {
                'type': 'full_width_text',
                'value': [],
            },
        ], True)

        # The page media should only include the default BrowsePae media, and
        # shouldn't add any additional files because of the FullWithText.
        self.assertEqual(page.media, ['secondary-navigation.js'])
 def test_expandable_group(self):
     """Expandable group correctly displays on a Browse Page"""
     browse_page = BrowsePage(
         title='Browse Page',
         slug='browse',
     )
     browse_page.content = StreamValue(browse_page.content.stream_block,
                                       [atomic.expandable_group], True)
     publish_page(child=browse_page)
     response = django_client.get('/browse/')
     self.assertContains(response, 'Expandable Group')
     self.assertContains(response, 'Expandable group body')
Exemple #7
0
    def test_serve_post_returns_400_for_invalid_form_id_no_form_present(self):
        page = BrowsePage(title='test', slug='test')
        page.content = blocks.StreamValue(page.content.stream_block,
                                          [{
                                              'type': 'full_width_text',
                                              'value': []
                                          }], True)
        save_new_page(page)

        request = self.factory.post('/', {'form_id': 'form-content-0'})
        response = page.serve_post(request)
        self.assertIsInstance(response, HttpResponseBadRequest)
    def test_resource_list_show_thumbnails_false(self):
        """ Resource List doesn't show thumbs when show_thumbnails is False"""
        no_thumbnails_page = BrowsePage(
            title='No Thumbnails Page',
            slug='no-thumbnails',
        )
        no_thumbnails_page.content = StreamValue(
            no_thumbnails_page.content.stream_block,
            [atomic.snippet_list_show_thumbnails_false], True)
        publish_page(child=no_thumbnails_page)

        self.create_resource()

        response = self.client.get('/no-thumbnails/')
        self.assertNotContains(response, 'o-resource-list_list-thumbnail')
    def test_resource_list_show_thumbnails_true(self):
        """ Resource List shows thumbnails when show_thumbnails is True"""
        thumbnails_page = BrowsePage(
            title='Thumbnails Page',
            slug='thumbnails',
        )
        thumbnails_page.content = StreamValue(
            thumbnails_page.content.stream_block,
            [atomic.snippet_list_show_thumbnails_true], True)
        publish_page(child=thumbnails_page)

        self.create_resource()

        response = self.client.get('/thumbnails/')
        self.assertContains(response, 'o-resource-list_list-thumbnail')
    def test_resource_list_set_col_width(self):
        """ Resource List Assets column width is fixed when set"""
        assets_width_page = BrowsePage(
            title='Assets Width Test Page',
            slug='assets-width',
        )
        assets_width_page.content = StreamValue(
            assets_width_page.content.stream_block,
            [atomic.snippet_list_actions_column_width_40], True)
        publish_page(child=assets_width_page)

        self.create_resource()

        response = self.client.get('/assets-width/')
        self.assertContains(response, 'u-w40pct"')
Exemple #11
0
def run():
    default_site = Site.objects.get(is_default_site=True)
    root_page = default_site.root_page

    try:
        about_us = Page.objects.get(slug='about-us')
    except Page.DoesNotExist:
        logger.info('Creating page: About Us')
        about_us = LandingPage(title='About Us', slug='about-us', live=False)
        save_new_page(about_us, root=root_page)

    try:
        careers = Page.objects.get(slug='careers')
    except Page.DoesNotExist:
        logger.info('Creating page: Careers')
        careers = SublandingPage(title='Careers', slug='careers', live=False)
        save_new_page(careers, root=about_us)

    child_pages = [
        ('Working at the CFPB', 'working-at-cfpb'),
        ('Job Application Process', 'application-process'),
        ('Students and Graduates', 'students-and-graduates'),
        ('Current Openings', 'current-openings'),
    ]

    for title, slug in child_pages:
        try:
            child_page = Page.objects.get(slug=slug)
        except Page.DoesNotExist:
            logger.info('Creating page: {}'.format(title))
            child_page = BrowsePage(title=title, slug=slug, live=False)
            save_new_page(child_page, careers)
Exemple #12
0
    def test_doesnt_pull_in_media_for_nonexistent_child_blocks(self):
        page = BrowsePage()
        page.content = blocks.StreamValue(
            page.content.stream_block,
            [
                {
                    'type': 'full_width_text',
                    'value': [],
                },
            ],
            True
        )

        # The page media should only include the default BrowsePae media, and
        # shouldn't add any additional files because of the FullWithText.
        self.assertEqual(page.media, ['secondary-navigation.js'])
    def test_resource_list(self):
        """ Resource List renders thumbnails when show_thumbnails is True"""
        browse_page = BrowsePage(
            title='Browse Page',
            slug='browse',
        )
        browse_page.content = StreamValue(
            browse_page.content.stream_block,
            [atomic.snippet_list_show_thumbnails_false], True)
        publish_page(child=browse_page)

        self.create_resource()

        response = self.client.get('/browse/')
        self.assertContains(response, 'Test Resource List')
        self.assertContains(response, 'Test Resource')
    def test_returns_form_block(self):
        page = BrowsePage(title='test', slug='test')
        revision = save_new_page(page)
        registration_form_block = atomic.conference_registration_form
        set_stream_data(page, 'content', [registration_form_block])

        self.assertEqual(get_registration_form_from_page(revision.page_id),
                         registration_form_block)
Exemple #15
0
    def test_has_children_is_false_for_browse_page_with_no_children(self):
        browse_page_without_children = BrowsePage(
            title='Browse page without children')
        helpers.publish_page(child=browse_page_without_children)

        nav, has_children = util.get_secondary_nav_items(
            self.request, browse_page_without_children)

        self.assertEqual(has_children, False)
Exemple #16
0
    def test_has_children_is_false_for_browse_page_with_only_non_browse_children(self):
        browse_page3 = BrowsePage(title='Browse page 3')
        helpers.publish_page(child=browse_page3)
        child_of_browse_page3 = CFGOVPage(title='Non-browse child of browse page')
        helpers.save_new_page(child_of_browse_page3, browse_page3)

        nav, has_children = util.get_secondary_nav_items(
            self.request, browse_page3
        )

        self.assertEqual(has_children, False)
def make_page_with_form(code='TEST_CODE', capacity=999):
    page = BrowsePage(title='test', slug='test')
    revision = save_new_page(page)

    block = atomic.conference_registration_form.copy()
    block['value'].update({
        'code': code,
        'capacity': capacity,
    })

    set_stream_data(page, 'content', [block])
    return revision.page_id
    def test_chart_block(self):
        """ Chart Block correctly renders fields on a Browse Page"""
        browse_page = BrowsePage(
            title='Browse Page',
            slug='browse',
        )

        # Adds a AUT market to a browse page
        browse_page.content = StreamValue(browse_page.content.stream_block,
                                          [atomic.chart_block], True)
        publish_page(child=browse_page)

        response = self.client.get('/browse/')
        self.assertContains(response, 'Volume of credit cards originated')
        self.assertContains(response, 'foo/bar.csv')
        self.assertContains(response, 'Data not final.')
        self.assertContains(
            response,
            'The most recent data available in this visualization are for April 2016'
        )
        self.assertContains(response, 'January 2018')
Exemple #19
0
    def test_has_children_is_true_for_browse_page_with_browse_filterable_child(
            self):
        browse_filterable_page = BrowsePage(title='Non-browse page')
        helpers.publish_page(child=browse_filterable_page)
        browse_filterable_page_child = BrowseFilterablePage(
            title='Child of non-browse page')
        helpers.save_new_page(browse_filterable_page_child,
                              browse_filterable_page)
        nav, has_children = util.get_secondary_nav_items(
            self.request, browse_filterable_page)

        self.assertEqual(has_children, True)
 def setUp(self):
     TEST_CLUSTERS = {
         1: [4, 5, 6],
         2: [7, 8],
         3: [9],
     }
     self.CLUSTERS = {
         'TEST_CLUSTERS': TEST_CLUSTERS,
     }
     root_page = Page.objects.get(pk=1)
     self.page = BrowsePage(title="Split testing test page")
     root_page.add_child(instance=self.page)
Exemple #21
0
    def test_answer_context_with_process_as_journey_referrer(self):
        """If the referrer is a nested Buying a House journey page,
        breadcrumbs should reflect the BAH page hierarchy."""
        bah_page = BrowsePage(title='Buying a House', slug='owning-a-home')
        helpers.publish_page(child=bah_page)
        journey_page = BrowsePage(title='Prepare page', slug='prepare')
        helpers.save_new_page(journey_page, bah_page)

        page = self.page1

        mock_site = mock.Mock()
        mock_site.root_page = HomePage.objects.get(slug='cfgov')
        request = HttpRequest()
        request.META['HTTP_REFERER'] = \
            'https://www.consumerfinance.gov/owning-a-home/process/'
        request.site = mock_site

        context = page.get_context(request)
        breadcrumbs = context['breadcrumb_items']
        self.assertEqual(len(breadcrumbs), 2)
        self.assertEqual(breadcrumbs[0]['title'], 'Buying a House')
        self.assertEqual(breadcrumbs[1]['title'], 'Prepare page')
Exemple #22
0
    def test_serve_post_valid_calls_feedback_block_handler(self):
        """A valid post should call the feedback block handler.

        This returns a redirect to the calling page and also uses the
        Django messages framework to set a message.
        """
        page = BrowsePage(title='test', slug='test')
        page.content = blocks.StreamValue(page.content.stream_block,
                                          [{
                                              'type': 'feedback',
                                              'value': 'something'
                                          }], True)
        save_new_page(page)

        request = self.factory.post('/', {'form_id': 'form-content-0'})
        SessionMiddleware().process_request(request)
        MessageMiddleware().process_request(request)

        response = page.serve_post(request)

        self.assertEqual((response.status_code, response['Location']),
                         (302, request.path))
Exemple #23
0
    def test_serve_post_valid_calls_feedback_block_handler(self):
        """A valid post should call the feedback block handler.

        This returns a redirect to the calling page and also uses the
        Django messages framework to set a message.
        """
        page = BrowsePage(title='test', slug='test')
        page.content = blocks.StreamValue(
            page.content.stream_block,
            [{'type': 'feedback', 'value': 'something'}],
            True
        )
        save_new_page(page)

        request = self.factory.post('/', {'form_id': 'form-content-0'})
        SessionMiddleware().process_request(request)
        MessageMiddleware().process_request(request)

        response = page.serve_post(request)

        self.assertEqual(
            (response.status_code, response['Location']),
            (302, request.path)
        )
 def test_raises_if_no_form_block(self):
     page = BrowsePage(title='test', slug='test')
     revision = save_new_page(page)
     with self.assertRaises(RuntimeError):
         get_registration_form_from_page(revision.page_id)
    def test_page_no_form_raises_runtimeerror(self):
        page = BrowsePage(title='empty', slug='empty')
        revision = save_new_page(page)

        with self.assertRaises(RuntimeError):
            ConferenceExporter(page_id=revision.page_id)
Exemple #26
0
 def test_serve_post_returns_400_for_invalid_form_id_non_number_index(self):
     page = BrowsePage(title='test', slug='test')
     request = self.factory.post('/', {'form_id': 'form-content-abc'})
     response = page.serve_post(request)
     self.assertIsInstance(response, HttpResponseBadRequest)
Exemple #27
0
 def test_serve_post_returns_400_for_invalid_form_id_invalid_index(self):
     page = BrowsePage(title='test', slug='test')
     request = self.factory.post('/', {'form_id': 'form-content-99'})
     response = page.serve_post(request)
     self.assertIsInstance(response, HttpResponseBadRequest)