Skip to content

Commit

Permalink
Add a GUI test for Enum.create_editor (#988)
Browse files Browse the repository at this point in the history
* Add a GUI test for Enum.create_editor

* Add a comment

* Some cleanup

* Make pyface an optional dependency for testing

* Use a simpler test
  • Loading branch information
midhun-pm authored Apr 16, 2020
1 parent 92a5573 commit 2685c7a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
3 changes: 3 additions & 0 deletions traits/testing/optional_dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ def optional_import(name):
numpy = optional_import("numpy")
requires_numpy = unittest.skipIf(numpy is None, "NumPy not available")

pyface = optional_import("pyface")
requires_pyface = unittest.skipIf(pyface is None, "Pyface not available")

sphinx = optional_import("sphinx")
requires_sphinx = unittest.skipIf(sphinx is None, "Sphinx not available")

Expand Down
30 changes: 30 additions & 0 deletions traits/tests/test_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@

from traits.api import (
Any, BaseEnum, Enum, HasTraits, List, Property, TraitError)
from traits.testing.optional_dependencies import pyface, requires_traitsui

if pyface is not None:
GuiTestAssistant = pyface.toolkit.toolkit_object(
"util.gui_test_assistant:GuiTestAssistant")
else:
class GuiTestAssistant:
pass


class FooEnum(enum.Enum):
Expand Down Expand Up @@ -110,6 +118,13 @@ class EnumCollectionExample(HasTraits):
slow_enum = BaseEnum("yes", "no", "maybe")


class EnumCollectionGUIExample(EnumCollectionExample):
# Override attributes that may fail GUI test
# until traitsui #781 is fixed.
int_set_enum = Enum("int", "set")
correct_int_set_enum = Enum("int", "set")


class EnumTestCase(unittest.TestCase):
def test_valid_enum(self):
example_model = ExampleModel(root="model1")
Expand Down Expand Up @@ -296,3 +311,18 @@ def test_base_enum(self):
with self.assertRaises(TraitError):
obj.slow_enum = "perhaps"
self.assertEqual(obj.slow_enum, "no")


@requires_traitsui
class TestGui(GuiTestAssistant, unittest.TestCase):

def test_create_editor(self):
obj = EnumCollectionGUIExample()

# Create a UI window
ui = obj.edit_traits()
try:
self.gui.process_events()
finally:
with self.delete_widget(ui.control):
ui.dispose()

0 comments on commit 2685c7a

Please sign in to comment.