# Karl O. Pinc <kop@meme.com>
+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 = {
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)
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
# 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)])