From 9c4edba17146563677a01ea2f2b2f7b8f2908ba3 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Wed, 14 Nov 2018 20:42:40 -0600 Subject: [PATCH] Fix testing of upload_view() --- tests/views/test_upload.py | 62 +++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/tests/views/test_upload.py b/tests/views/test_upload.py index 4d7e4dc..694bed1 100644 --- a/tests/views/test_upload.py +++ b/tests/views/test_upload.py @@ -19,10 +19,17 @@ # Karl O. Pinc +import logging import pytest +from pyramid.threadlocal import get_current_request +from pgwui_common.__init__ import includeme as pgwui_common_includeme from pgwui_core import form_constants +from pgwui_upload.__init__ import includeme as pgwui_upload_includeme from pgwui_upload.views import upload +# Activiate our pytest plugin +pytest_plugins = ("pgwui",) + # Constants CHANGED_RESPONSE = { @@ -53,28 +60,16 @@ class MockTableUploadHandler(): pass -class MockLogger(): - def __init__(self): - self.info_called = False - - def info(self, *args): - self.info_called = True - - # Fixtures @pytest.fixture -def isolate_upload_view(monkeypatch): +def isolate_upload_view(monkeypatch, pyramid_request_config): '''Keep upload_view() from calling anything Also, have isolate_upload_view(response) cause UploadEngine to return the supplied "response". ''' def run(response): - # Have the pyramid.view.view_config decorator do nothing - monkeypatch.setattr(upload, 'view_config', - lambda **kwargs: (lambda func: func)) - def upload_engine(*args): return MockUploadEngine(response) @@ -82,9 +77,8 @@ def isolate_upload_view(monkeypatch): monkeypatch.setattr( upload, 'TableUploadHandler', MockTableUploadHandler) - mock_logger = MockLogger() - monkeypatch.setattr(upload, 'log', mock_logger) - return mock_logger + pgwui_common_includeme(pyramid_request_config) + pgwui_upload_includeme(pyramid_request_config) return run @@ -93,38 +87,50 @@ def isolate_upload_view(monkeypatch): # upload_view() -def test_upload_view_db_not_changed(monkeypatch, isolate_upload_view): +def test_upload_view_db_not_changed(isolate_upload_view, caplog): '''When the db did not change nothing logs''' + caplog.set_level(logging.DEBUG) response = {'db_changed': False} - mock_logger = isolate_upload_view(response) - result = upload.upload_view(None) + isolate_upload_view(response) + result = upload.upload_view(get_current_request()) + del result['pgwui'] # Remove variables added by pgwui view decorators + + log_tuples = caplog.record_tuples assert result == response - assert mock_logger.info_called is False + assert log_tuples == [] -def test_upload_view_db_changed_csv(monkeypatch, isolate_upload_view): +def test_upload_view_db_changed_csv(isolate_upload_view, caplog): '''When the db did change from CSV input something logs''' + caplog.set_level(logging.DEBUG) response = CHANGED_RESPONSE response['csv_checked'] = form_constants.CHECKED - mock_logger = isolate_upload_view(response) - result = upload.upload_view(None) + isolate_upload_view(response) + result = upload.upload_view(get_current_request()) + del result['pgwui'] # Remove variables added by pgwui view decorators + log_tuples = caplog.record_tuples assert result == response - assert mock_logger.info_called is True + assert ([tup[:2] for tup in log_tuples] + == [('pgwui_upload.views.upload', logging.INFO)]) -def test_upload_view_db_changed_no_csv(monkeypatch, isolate_upload_view): +def test_upload_view_db_changed_no_csv(isolate_upload_view, caplog): '''When the db did change from not-CSV input something logs''' + caplog.set_level(logging.DEBUG) response = CHANGED_RESPONSE response['csv_checked'] = form_constants.UNCHECKED - mock_logger = isolate_upload_view(response) - result = upload.upload_view(None) + isolate_upload_view(response) + result = upload.upload_view(get_current_request()) + del result['pgwui'] # Remove variables added by pgwui view decorators + log_tuples = caplog.record_tuples assert result == response - assert mock_logger.info_called is True + assert ([tup[:2] for tup in log_tuples] + == [('pgwui_upload.views.upload', logging.INFO)]) -- 2.34.1