Fix testing of upload_view()
authorKarl O. Pinc <kop@meme.com>
Thu, 15 Nov 2018 02:42:40 +0000 (20:42 -0600)
committerKarl O. Pinc <kop@meme.com>
Thu, 15 Nov 2018 02:42:40 +0000 (20:42 -0600)
tests/views/test_upload.py

index 4d7e4dc52e452018be937d6d4586aa07c2068161..694bed1c793590917ab687509151302a1f3f148f 100644 (file)
 
 # 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 = {
@@ -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)])