mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2024-11-28 03:23:52 -06:00
Fix the JS Bundler test to work when there are multiple servers defined in a test run.
This commit is contained in:
parent
cb97722fc3
commit
4b846ae4e0
@ -10,12 +10,14 @@
|
||||
|
||||
import sys
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
if sys.version_info < (3, 3):
|
||||
import mock
|
||||
from mock import patch
|
||||
else:
|
||||
import unittest.mock as mock
|
||||
from unittest.mock import patch
|
||||
|
||||
from pgadmin.utils.route import BaseTestGenerator
|
||||
from pgadmin.utils.javascript.javascript_bundler import JavascriptBundler
|
||||
from pgadmin.utils.javascript.javascript_bundler import JsState
|
||||
|
||||
class JavascriptBundlerTestCase(BaseTestGenerator):
|
||||
"""This tests that the javascript bundler tool causes the application to bundle,
|
||||
@ -23,96 +25,88 @@ class JavascriptBundlerTestCase(BaseTestGenerator):
|
||||
|
||||
scenarios = [('scenario name: JavascriptBundlerTestCase', dict())]
|
||||
|
||||
def setUp(self):
|
||||
self.skipTest("Test currently disabled for all server versions.")
|
||||
self.mockSubprocess = mock.Mock()
|
||||
self.mockOs = mock.Mock()
|
||||
sys.modules['subprocess'] = self.mockSubprocess
|
||||
sys.modules['os'] = self.mockOs
|
||||
def __init__(self, methodName='runTest'):
|
||||
super(BaseTestGenerator, self).__init__(methodName)
|
||||
self.mockOs = None
|
||||
self.mockSubprocessCall = None
|
||||
|
||||
def runTest(self):
|
||||
from pgadmin.utils.javascript.javascript_bundler import JavascriptBundler
|
||||
from pgadmin.utils.javascript.javascript_bundler import JsState
|
||||
self.JavascriptBundler = JavascriptBundler
|
||||
self.JsState = JsState
|
||||
@patch('pgadmin.utils.javascript.javascript_bundler.os')
|
||||
@patch('pgadmin.utils.javascript.javascript_bundler.call')
|
||||
def runTest(self, subprocessMock, osMock):
|
||||
self.mockOs = osMock
|
||||
self.mockSubprocessCall = subprocessMock
|
||||
|
||||
self._bundling_succeeds()
|
||||
self.resetTestState()
|
||||
self.reset_test_state()
|
||||
self._bundling_fails_and_there_is_no_existing_bundle()
|
||||
self.resetTestState()
|
||||
self.reset_test_state()
|
||||
self._bundling_fails_when_bundling_returns_nonzero()
|
||||
self.resetTestState()
|
||||
self.reset_test_state()
|
||||
self._bundling_fails_and_there_is_no_existing_bundle_directory()
|
||||
self.resetTestState()
|
||||
self.reset_test_state()
|
||||
self._bundling_fails_but_there_was_existing_bundle()
|
||||
self.resetTestState()
|
||||
self.reset_test_state()
|
||||
|
||||
def resetTestState(self):
|
||||
self.mockSubprocess.reset_mock()
|
||||
self.mockSubprocess.call.side_effect = None
|
||||
def reset_test_state(self):
|
||||
self.mockSubprocessCall.reset_mock()
|
||||
self.mockSubprocessCall.side_effect = None
|
||||
self.mockOs.reset_mock()
|
||||
self.mockOs.listdir.side_effect = None
|
||||
self.mockOs.path.exists.side_effect = None
|
||||
|
||||
def _bundling_succeeds(self):
|
||||
javascriptBundler = self.JavascriptBundler()
|
||||
self.assertEqual(len(self.mockSubprocess.method_calls), 0)
|
||||
self.mockSubprocess.call.return_value = 0
|
||||
javascript_bundler = JavascriptBundler()
|
||||
self.assertEqual(len(self.mockSubprocessCall.method_calls), 0)
|
||||
self.mockSubprocessCall.return_value = 0
|
||||
|
||||
self.mockOs.listdir.return_value = [u'history.js', u'reactComponents.js']
|
||||
|
||||
javascriptBundler.bundle()
|
||||
self.mockSubprocess.call.assert_called_once_with(['yarn', 'run', 'bundle:dev'])
|
||||
javascript_bundler.bundle()
|
||||
self.mockSubprocessCall.assert_called_once_with(['yarn', 'run', 'bundle:dev'])
|
||||
|
||||
reportedState = javascriptBundler.report()
|
||||
expectedState = self.JsState.NEW
|
||||
self.assertEqual(reportedState, expectedState)
|
||||
self.__assertState(javascript_bundler, JsState.NEW)
|
||||
|
||||
def _bundling_fails_when_bundling_returns_nonzero(self):
|
||||
javascriptBundler = self.JavascriptBundler()
|
||||
self.assertEqual(len(self.mockSubprocess.method_calls), 0)
|
||||
javascript_bundler = JavascriptBundler()
|
||||
self.assertEqual(len(self.mockSubprocessCall.method_calls), 0)
|
||||
self.mockOs.listdir.return_value = []
|
||||
self.mockSubprocess.call.return_value = 99
|
||||
self.mockSubprocessCall.return_value = 99
|
||||
|
||||
javascriptBundler.bundle()
|
||||
javascript_bundler.bundle()
|
||||
|
||||
reportedState = javascriptBundler.report()
|
||||
expectedState = self.JsState.NONE
|
||||
self.assertEqual(reportedState, expectedState)
|
||||
self.__assertState(javascript_bundler, JsState.NONE)
|
||||
|
||||
def _bundling_fails_and_there_is_no_existing_bundle(self):
|
||||
javascriptBundler = self.JavascriptBundler()
|
||||
self.mockSubprocess.call.side_effect = OSError("mock exception behavior")
|
||||
javascript_bundler = JavascriptBundler()
|
||||
self.mockSubprocessCall.side_effect = OSError("mock exception behavior")
|
||||
self.mockOs.path.exists.return_value = True
|
||||
self.mockOs.listdir.return_value = []
|
||||
|
||||
javascriptBundler.bundle()
|
||||
javascript_bundler.bundle()
|
||||
|
||||
reportedState = javascriptBundler.report()
|
||||
expectedState = self.JsState.NONE
|
||||
self.assertEqual(reportedState, expectedState)
|
||||
self.__assertState(javascript_bundler, JsState.NONE)
|
||||
|
||||
def _bundling_fails_and_there_is_no_existing_bundle_directory(self):
|
||||
javascriptBundler = self.JavascriptBundler()
|
||||
self.mockSubprocess.call.side_effect = OSError("mock exception behavior")
|
||||
javascript_bundler = JavascriptBundler()
|
||||
self.mockSubprocessCall.side_effect = OSError("mock exception behavior")
|
||||
self.mockOs.path.exists.return_value = False
|
||||
self.mockOs.listdir.side_effect = OSError("mock exception behavior")
|
||||
|
||||
javascriptBundler.bundle()
|
||||
javascript_bundler.bundle()
|
||||
|
||||
reportedState = javascriptBundler.report()
|
||||
expectedState = self.JsState.NONE
|
||||
self.assertEqual(reportedState, expectedState)
|
||||
self.__assertState(javascript_bundler, JsState.NONE)
|
||||
|
||||
def _bundling_fails_but_there_was_existing_bundle(self):
|
||||
javascriptBundler = self.JavascriptBundler()
|
||||
self.mockSubprocess.call.side_effect = OSError("mock exception behavior")
|
||||
javascript_bundler = JavascriptBundler()
|
||||
self.mockSubprocessCall.side_effect = OSError("mock exception behavior")
|
||||
self.mockOs.path.exists.return_value = True
|
||||
self.mockOs.listdir.return_value = [u'history.js', u'reactComponents.js']
|
||||
|
||||
javascriptBundler.bundle()
|
||||
self.mockSubprocess.call.assert_called_once_with(['yarn', 'run', 'bundle:dev'])
|
||||
javascript_bundler.bundle()
|
||||
self.mockSubprocessCall.assert_called_once_with(['yarn', 'run', 'bundle:dev'])
|
||||
|
||||
reportedState = javascriptBundler.report()
|
||||
expectedState = self.JsState.OLD
|
||||
self.assertEqual(reportedState, expectedState)
|
||||
self.__assertState(javascript_bundler, JsState.OLD)
|
||||
|
||||
def __assertState(self, javascript_bundler, expected_state):
|
||||
reported_state = javascript_bundler.report()
|
||||
self.assertEqual(reported_state, expected_state)
|
||||
|
Loading…
Reference in New Issue
Block a user