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')
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_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')
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"')
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_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(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_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_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')
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_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) )