From: Karl O. Pinc Date: Thu, 25 Oct 2018 18:57:31 +0000 (-0500) Subject: Abstract out upload_view() testing setup X-Git-Url: https://papio.biology.duke.edu/gitweb/?a=commitdiff_plain;h=94d4f91cc2484980619a2ec4002117b71b5d5a4f;p=pgwui_upload Abstract out upload_view() testing setup --- 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