mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-11-05 05:37:13 -06:00
1) Replace the deprecated unit test method. 2) Wraps filter usage in a list call. 3) Converts the old metaclass syntax to new. 4) Use range instead of xrange method. 5) Change Unicode to str. 6) Several other transformations. 7) Fixed change password test cases. 8) Use simplejson instead of plain JSON.
114 lines
4.3 KiB
Python
114 lines
4.3 KiB
Python
##########################################################################
|
|
#
|
|
# pgAdmin 4 - PostgreSQL Tools
|
|
#
|
|
# Copyright (C) 2013 - 2020, The pgAdmin Development Team
|
|
# This software is released under the PostgreSQL Licence
|
|
#
|
|
##########################################################################
|
|
|
|
from pgadmin.utils.route import BaseTestGenerator
|
|
from pgadmin.utils.javascript.javascript_bundler import JavascriptBundler
|
|
from pgadmin.utils.javascript.javascript_bundler import JsState
|
|
from unittest.mock import patch
|
|
|
|
|
|
class JavascriptBundlerTestCase(BaseTestGenerator):
|
|
"""This tests that the javascript bundler tool causes the application to
|
|
bundle,and can be invoked before and after app start correctly"""
|
|
|
|
scenarios = [('scenario name: JavascriptBundlerTestCase', dict())]
|
|
|
|
def __init__(self, methodName='runTest'):
|
|
super(BaseTestGenerator, self).__init__(methodName)
|
|
self.mockOs = None
|
|
self.mockSubprocessCall = None
|
|
|
|
@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.reset_test_state()
|
|
self._bundling_fails_and_there_is_no_existing_bundle()
|
|
self.reset_test_state()
|
|
self._bundling_fails_when_bundling_returns_nonzero()
|
|
self.reset_test_state()
|
|
self._bundling_fails_and_there_is_no_existing_bundle_directory()
|
|
self.reset_test_state()
|
|
self._bundling_fails_but_there_was_existing_bundle()
|
|
self.reset_test_state()
|
|
|
|
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):
|
|
javascript_bundler = JavascriptBundler()
|
|
self.assertEqual(len(self.mockSubprocessCall.method_calls), 0)
|
|
self.mockSubprocessCall.return_value = 0
|
|
|
|
self.mockOs.listdir.return_value = [
|
|
'history.js', 'reactComponents.js']
|
|
|
|
javascript_bundler.bundle()
|
|
self.mockSubprocessCall.assert_called_once_with(
|
|
['yarn', 'run', 'bundle:dev'])
|
|
|
|
self.__assertState(javascript_bundler, JsState.NEW)
|
|
|
|
def _bundling_fails_when_bundling_returns_nonzero(self):
|
|
javascript_bundler = JavascriptBundler()
|
|
self.assertEqual(len(self.mockSubprocessCall.method_calls), 0)
|
|
self.mockOs.listdir.return_value = []
|
|
self.mockSubprocessCall.return_value = 99
|
|
|
|
javascript_bundler.bundle()
|
|
|
|
self.__assertState(javascript_bundler, JsState.NONE)
|
|
|
|
def _bundling_fails_and_there_is_no_existing_bundle(self):
|
|
javascript_bundler = JavascriptBundler()
|
|
self.mockSubprocessCall.side_effect = OSError(
|
|
"mock exception behavior")
|
|
self.mockOs.path.exists.return_value = True
|
|
self.mockOs.listdir.return_value = []
|
|
|
|
javascript_bundler.bundle()
|
|
|
|
self.__assertState(javascript_bundler, JsState.NONE)
|
|
|
|
def _bundling_fails_and_there_is_no_existing_bundle_directory(self):
|
|
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")
|
|
|
|
javascript_bundler.bundle()
|
|
|
|
self.__assertState(javascript_bundler, JsState.NONE)
|
|
|
|
def _bundling_fails_but_there_was_existing_bundle(self):
|
|
javascript_bundler = JavascriptBundler()
|
|
self.mockSubprocessCall.side_effect = OSError(
|
|
"mock exception behavior")
|
|
self.mockOs.path.exists.return_value = True
|
|
self.mockOs.listdir.return_value = [
|
|
'history.js', 'reactComponents.js']
|
|
|
|
javascript_bundler.bundle()
|
|
self.mockSubprocessCall.assert_called_once_with(
|
|
['yarn', 'run', 'bundle:dev'])
|
|
|
|
self.__assertState(javascript_bundler, JsState.OLD)
|
|
|
|
def __assertState(self, javascript_bundler, expected_state):
|
|
reported_state = javascript_bundler.report()
|
|
self.assertEqual(reported_state, expected_state)
|