Testing Enable ComponentsΒΆ
In order to assist in the testing of enable Component and
Interactor objects, Enable provides the
EnableTestAssistant class. This is a mixin class intended to work
along side unittest.TestCase. Often times in order to
effectively test an enable component and its supported interactivity, one needs
to simulate user interactions such as moving/clicking/dragging the mouse, using
keys, etc. This involves manually creating the corresponding events with
appropriate state and dispatching them appropriately. This can be rather
tedious and EnableTestAssistant provides a number of helper methods
to greatly simplify the process, making tests both faster/cleaner to write and
easier to read. Furthermore, in test scenarios it is ofen unnecessary to launch
the full application window and as such EnableTestAssistant provides
a create_mock_window() method for simply
mocking out the window itself. This allows for specifically testing the
component of interest alone, as is the goal in a unit test. Please see the api
docs (EnableTestAssistant) for the full list of methods
available.
Here is an example
import unittest
from unittest import mock
from enable.api import Component
from enable.testing import EnableTestAssistant
class TestExample(unittest.TestCase):
def test_example(self):
test_assistant = EnableTestAssistant()
component = Component(bounds=[100, 200])
event = test_assistant.mouse_move(component, 10, 20)
self.assertEqual(event.x, 10)
self.assertEqual(event.y, 20)
self.assertFalse(event.alt_down)
self.assertFalse(event.control_down)
self.assertFalse(event.shift_down)
self.assertFalse(sevent.left_down)
self.assertEqual(event.window.get_pointer_position(), (10, 20))
component.normal_left_down = mock.Mock()
test_assistant.mouse_down(component, x=0, y=0)
component.normal_left_down.assert_called_once()
event = test_assistant.mouse_move(component, 20, 30, left_down=True)
self.assertEqual(event.x, 20)
self.assertEqual(event.y, 30)
self.assertIs(event.left_down, True)