diff --git a/integraality/tests/test_app.py b/integraality/tests/test_app.py index f58e47b..0dbfb21 100644 --- a/integraality/tests/test_app.py +++ b/integraality/tests/test_app.py @@ -1,73 +1,112 @@ # -*- coding: utf-8 -*- import unittest from unittest.mock import patch from app import app from pages_processor import ProcessingException class AppTests(unittest.TestCase): def setUp(self): app.config['TESTING'] = True self.app = app.test_client() class BasicTests(AppTests): def test_index_page(self): response = self.app.get('/') self.assertEqual(response.status_code, 200) self.assertIn("
Something went wrong when updating page {page}. Please check your configuration.
'.format(page=self.linked_page) # noqa self.assertErrorPage(response, message) def test_update_error_unknown_exception(self): self.mock_pages_processor.return_value.process_one_page.side_effect = ValueError response = self.app.get('/update?page=%s' % self.page_title) self.mock_pages_processor.assert_called_once_with() self.mock_pages_processor.return_value.process_one_page.assert_called_once_with(page_title=self.page_title) message = 'Something catastrophic happened when processing page {page}.
'.format(page=self.linked_page) self.assertErrorPage(response, message) + + +class QueriesTests(PagesProcessorTests): + + def setUp(self): + super().setUp() + patcher = patch('pages_processor.PropertyStatistics', autospec=True) + self.mock_property_statistics = patcher.start() + self.addCleanup(patcher.stop) + + def test_queries_success(self): + self.mock_pages_processor.return_value.make_stats_object_for_page_title.return_value = self.mock_property_statistics # noqa + self.mock_property_statistics.get_query_for_items_for_property_positive.return_value = "X" + self.mock_property_statistics.get_query_for_items_for_property_negative.return_value = "Z" + response = self.app.get('/queries?page=%s&property=P1&grouping=Q2' % self.page_title) + self.mock_pages_processor.assert_called_once_with() + self.mock_pages_processor.return_value.make_stats_object_for_page_title.assert_called_once_with(page_title=self.page_title) # noqa + self.mock_property_statistics.get_query_for_items_for_property_positive.assert_called_once_with("P1", "Q2") + self.mock_property_statistics.get_query_for_items_for_property_negative.assert_called_once_with("P1", "Q2") + expected = ( + 'From page Foo, ' + 'P1, ' + 'Q2
\n\t' + 'All items with the property set\n\t' # noqa + 'All items without the property set' # noqa + ) + self.assertEqual(response.status_code, 200) + self.assertIn(expected, response.get_data(as_text=True)) + + def test_queries_error_unknown_exception(self): + self.mock_pages_processor.return_value.make_stats_object_for_page_title.side_effect = ValueError + response = self.app.get('/queries?page=%s&property=P1&grouping=Q2' % self.page_title) + self.mock_pages_processor.assert_called_once_with() + self.mock_pages_processor.return_value.make_stats_object_for_page_title.assert_called_once_with(page_title=self.page_title) # noqa + message = 'Something catastrophic happened when generating queries from page {page}.
'.format(page=self.linked_page) # noqa + self.assertErrorPage(response, message)