Skip to content

Commit 611dd9c

Browse files
author
Humberto Sanchez II
committed
<Refactor>[Unit Tests]: <Unit tests should be DRY>
[Mostly DRY'ing out unit test code] [ #44 #45 ]
1 parent b5adf2d commit 611dd9c

File tree

9 files changed

+68
-136
lines changed

9 files changed

+68
-136
lines changed

.circleci/config.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,14 @@ jobs:
2727
sudo apt install libgtk-3-dev
2828
sudo apt-get install -y libsdl2-dev
2929
pip install --upgrade pip
30-
pip install wheel==0.38.4
31-
pip install setuptools==65.5.1
30+
pip install wheel
31+
pip install setuptools
3232
pip install six==1.16.0
3333
pip install html-testRunner~=1.2.1
3434
pip install attrdict3
3535
pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04 wxPython
36-
pip install ogl~=0.70.20
36+
pip install hasiicommon~=0.2.1
37+
pip install ogl~=0.70.22
3738
pip install untangle==1.2.1
3839
- run:
3940
name: run tests

requirements.txt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
wheel==0.38.4
2-
setuptools==67.4.0
1+
wheel==0.40.0
2+
setuptools==67.6.1
33
twine==4.0.2
44
build==0.10.0
55
html-testRunner~=1.2.1
66

7-
mypy==1.0.1
7+
mypy==1.1.1
88
mypy-extensions==1.0.0
9-
types-Deprecated==1.2.9.1
10-
types-setuptools==67.4.0.1
9+
types-Deprecated==1.2.9.2
10+
types-setuptools==67.6.0.6
1111
typing_extensions==4.5.0
1212

1313
Deprecated~=1.2.13
1414

15+
untangle==1.2.1
1516
wxPython~=4.2.0
1617

17-
pyutmodel==1.4.0
18-
ogl~=0.70.20
19-
untangle==1.2.1
18+
hasiicommon~=0.2.1
19+
pyutmodel~=1.4.2
20+
ogl~=0.70.22
2021

scripts/query.slg

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
hasii2011/hasiicommon
2+
hasii2011/pyutmodel
3+
hasii2011/ogl

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@
2323
'untanglepyut': ['py.typed'],
2424
},
2525

26-
install_requires=['ogl==0.70.20', 'untangle==1.2.1'],
26+
install_requires=['hasiicommon~=0.2.1', 'pyutmodel~=1.4.2', 'ogl==0.70.22', 'untangle==1.2.1'],
2727
)

tests/TestBase.py

Lines changed: 4 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,22 @@
11

2-
import logging
3-
import logging.config
4-
5-
import json
6-
7-
from unittest import TestCase
8-
9-
from pkg_resources import resource_filename
10-
11-
from miniogl.DiagramFrame import DiagramFrame
12-
13-
from wx import App
14-
from wx import Frame
15-
from wx import ID_ANY
2+
from hasiicommon.ui.UnitTestBaseW import UnitTestBaseW
163

174
from untanglepyut.UnTangler import DocumentTitle
185

19-
JSON_LOGGING_CONFIG_FILENAME: str = "testLoggingConfig.json"
20-
TEST_DIRECTORY: str = 'tests'
21-
226
DIAGRAM_NAME_1: DocumentTitle = DocumentTitle('Diagram-1')
237
DIAGRAM_NAME_2: DocumentTitle = DocumentTitle('Diagram-2')
248
TEST_XML_FILENAME: str = 'MultiDocumentProject.xml'
259

2610

27-
class DummyApp(App):
28-
def OnInit(self):
29-
return True
30-
31-
32-
class TestBase(TestCase):
11+
class TestBase(UnitTestBaseW):
3312

34-
RESOURCES_PACKAGE_NAME: str = 'tests.resources'
3513
RESOURCES_TEST_CLASSES_PACKAGE_NAME: str = 'tests.resources.testclass'
3614
RESOURCES_TEST_JAVA_CLASSES_PACKAGE_NAME: str = 'tests.resources.testclass.ozzee'
3715
RESOURCES_TEST_DATA_PACKAGE_NAME: str = 'tests.resources.testdata'
3816
RESOURCES_TEST_IMAGES_PACKAGE_NAME: str = 'tests.resources.testimages'
3917

4018
def setUp(self):
41-
self._app: DummyApp = DummyApp()
42-
43-
# Create frame
44-
baseFrame: Frame = Frame(None, ID_ANY, "", size=(10, 10))
45-
# noinspection PyTypeChecker
46-
umlFrame = DiagramFrame(baseFrame)
47-
umlFrame.Show(True)
19+
super().setUp()
4820

4921
def tearDown(self):
50-
self._app.OnExit()
51-
52-
"""
53-
A base unit test class to initialize some logging stuff we need
54-
"""
55-
@classmethod
56-
def setUpLogging(cls):
57-
""""""
58-
59-
loggingConfigFilename: str = cls.findLoggingConfig()
60-
61-
with open(loggingConfigFilename, 'r') as loggingConfigurationFile:
62-
configurationDictionary = json.load(loggingConfigurationFile)
63-
64-
logging.config.dictConfig(configurationDictionary)
65-
logging.logProcesses = False
66-
logging.logThreads = False
67-
68-
@classmethod
69-
def findLoggingConfig(cls) -> str:
70-
71-
fqFileName = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, JSON_LOGGING_CONFIG_FILENAME)
72-
73-
return fqFileName
22+
pass

tests/untanglepyut/TestUnTangleOglLinks.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11

22
from typing import cast
33

4-
from logging import Logger
5-
from logging import getLogger
6-
74
from unittest import TestSuite
85
from unittest import main as unitTestMain
96

107
from miniogl.SelectAnchorPoint import SelectAnchorPoint
8+
119
from ogl.OglAssociation import OglAssociation
1210
from ogl.OglAssociationLabel import OglAssociationLabel
1311

1412
from ogl.OglClass import OglClass
1513
from ogl.OglInheritance import OglInheritance
1614
from ogl.OglInterface2 import OglInterface2
1715
from ogl.OglLink import OglLink
18-
from pkg_resources import resource_filename
1916

2017
from pyutmodel.PyutClass import PyutClass
2118
from pyutmodel.PyutInterface import PyutInterface
@@ -26,6 +23,7 @@
2623
from tests.TestBase import DIAGRAM_NAME_2
2724
from tests.TestBase import TEST_XML_FILENAME
2825
from tests.TestBase import TestBase
26+
2927
from untanglepyut.Types import UntangledOglLinks
3028
from untanglepyut.UnTangler import Document
3129
from untanglepyut.UnTangler import DocumentTitle
@@ -37,24 +35,17 @@ class TestUnTangleOglLinks(TestBase):
3735
"""
3836
SIMPLE_DIAGRAM_NAME: DocumentTitle = DocumentTitle('Simple')
3937

40-
clsLogger: Logger = cast(Logger, None)
41-
42-
@classmethod
43-
def setUpClass(cls):
44-
TestBase.setUpLogging()
45-
TestUnTangleOglLinks.clsLogger = getLogger(__name__)
46-
4738
def setUp(self):
48-
self.logger: Logger = TestUnTangleOglLinks.clsLogger
39+
4940
super().setUp()
50-
self._fqFileName: str = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, TEST_XML_FILENAME)
41+
self._fqFileName: str = TestBase.getFullyQualifiedResourceFileName(TestBase.RESOURCES_PACKAGE_NAME, TEST_XML_FILENAME)
5142

5243
def tearDown(self):
5344
super().tearDown()
5445

5546
def testNoGraphicLinks(self):
56-
fqFileName = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, 'ScaffoldDiagram.xml')
57-
untangler: UnTangler = UnTangler()
47+
fqFileName: str = TestBase.getFullyQualifiedResourceFileName(TestBase.RESOURCES_PACKAGE_NAME, 'ScaffoldDiagram.xml')
48+
untangler: UnTangler = UnTangler()
5849

5950
untangler.untangleFile(fqFileName)
6051

@@ -70,9 +61,8 @@ def testGraphicSimpleLinks(self):
7061

7162
def testSimpleInheritance(self):
7263

73-
fqFileName = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, 'SimpleInheritance.xml')
74-
75-
untangler: UnTangler = UnTangler()
64+
fqFileName: str = TestBase.getFullyQualifiedResourceFileName(TestBase.RESOURCES_PACKAGE_NAME, 'SimpleInheritance.xml')
65+
untangler: UnTangler = UnTangler()
7666

7767
untangler.untangleFile(fqFileName=fqFileName)
7868

@@ -163,7 +153,8 @@ def testLollipopInterfaceMethodsCreated(self):
163153
self.assertTrue(foundMethods, 'Did not untangle the expected lollipop interface')
164154

165155
def testGetAssociationLabelPositions(self):
166-
fqFileName: str = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, 'SimpleGraphicLinkTest.xml')
156+
157+
fqFileName: str = TestBase.getFullyQualifiedResourceFileName(TestBase.RESOURCES_PACKAGE_NAME, 'SimpleGraphicLinkTest.xml')
167158
untangler: UnTangler = UnTangler()
168159

169160
untangler.untangleFile(fqFileName)

tests/untanglepyut/TestUnTangleSequenceDiagram.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@
22
from typing import Tuple
33
from typing import cast
44

5-
from logging import Logger
6-
from logging import getLogger
7-
85
from unittest import TestSuite
96
from unittest import main as unitTestMain
107

118
from ogl.OglDimensions import OglDimensions
129
from ogl.preferences.OglPreferences import OglPreferences
13-
from pkg_resources import resource_filename
1410

1511
from pyutmodel.PyutLinkType import PyutLinkType
1612
from pyutmodel.PyutSDInstance import PyutSDInstance
@@ -31,16 +27,8 @@
3127
class TestUnTangleSequenceDiagram(TestBase):
3228
"""
3329
"""
34-
clsLogger: Logger = cast(Logger, None)
35-
36-
@classmethod
37-
def setUpClass(cls):
38-
TestBase.setUpLogging()
39-
TestUnTangleSequenceDiagram.clsLogger = getLogger(__name__)
40-
4130
def setUp(self):
4231
super().setUp()
43-
self.logger: Logger = TestUnTangleSequenceDiagram.clsLogger
4432

4533
def tearDown(self):
4634
super().tearDown()
@@ -57,7 +45,7 @@ def testSequenceInstances(self):
5745

5846
expectedInstanceNames: List[str] = ['Instance1', 'Instance2']
5947
for oglSDInstance in oglSDInstances.values():
60-
self.assertIn(oglSDInstance.instanceName.GetText(), expectedInstanceNames, 'Not an expected instance')
48+
self.assertIn(oglSDInstance.instanceName.text, expectedInstanceNames, 'Not an expected instance')
6149

6250
def testSequenceMessages(self):
6351
document: Document = self._retrieveSequenceDiagramDocument()
@@ -100,7 +88,7 @@ def testSDInstanceLifeLineIsCorrect(self):
10088

10189
def _retrieveSequenceDiagramDocument(self) -> Document:
10290

103-
fqFileName: str = resource_filename(TestBase.RESOURCES_PACKAGE_NAME, 'SequenceDiagram.xml')
91+
fqFileName: str = TestBase.getFullyQualifiedResourceFileName(TestBase.RESOURCES_PACKAGE_NAME, 'SequenceDiagram.xml')
10492
untangler: UnTangler = UnTangler()
10593

10694
untangler.untangleFile(fqFileName=fqFileName)

0 commit comments

Comments
 (0)