From 94d4f91cc2484980619a2ec4002117b71b5d5a4f Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Thu, 25 Oct 2018 13:57:31 -0500 Subject: [PATCH] Abstract out upload_view() testing setup --- tests/views/test_upload.py | 54 +++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/tests/views/test_upload.py b/tests/views/test_upload.py index 42eebc2..44bc896 100644 --- a/tests/views/test_upload.py +++ b/tests/views/test_upload.py @@ -19,6 +19,7 @@ # Karl O. Pinc +import pytest from pgwui_upload.views import upload @@ -37,34 +38,51 @@ class MockTableUploadHandler(): pass -# Tests +class MockLogger(): + def __init__(self): + self.info_called = False -# upload_view() + def info(self, *args): + self.info_called = True -def test_upload_view_db_not_changed(monkeypatch): - '''When the db did not change nothing logs''' - # Have the pyramid.view.view_config decorator do nothing - monkeypatch.setattr(upload, 'view_config', - lambda **kwargs: (lambda func: func)) +# Fixtures - mock_info_called = False +@pytest.fixture +def isolate_upload_view(monkeypatch): + '''Keep upload_view() from calling anything - def mock_info(*args): - nonlocal mock_info_called - mock_info_called = True + 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)) - monkeypatch.setattr(upload, 'log', mock_info) + def upload_engine(*args): + return MockUploadEngine(response) + + monkeypatch.setattr(upload, 'UploadEngine', upload_engine) + monkeypatch.setattr( + upload, 'TableUploadHandler', MockTableUploadHandler) + + return run - response = {'db_changed': False} - def upload_engine(*args): - return MockUploadEngine(response) +# Tests + +# upload_view() - monkeypatch.setattr(upload, 'UploadEngine', upload_engine) - monkeypatch.setattr(upload, 'TableUploadHandler', MockTableUploadHandler) +def test_upload_view_db_not_changed(monkeypatch, isolate_upload_view): + '''When the db did not change nothing logs''' + + mock_logger = MockLogger() + monkeypatch.setattr(upload, 'log', mock_logger) + response = {'db_changed': False} + isolate_upload_view(response) result = upload.upload_view(None) assert result == response - assert mock_info_called is False + assert mock_logger.info_called is False -- 2.34.1