aboutsummaryrefslogtreecommitdiff
path: root/tests/test_cls.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_cls.py')
-rw-r--r--tests/test_cls.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/test_cls.py b/tests/test_cls.py
new file mode 100644
index 0000000..d7ca3ec
--- /dev/null
+++ b/tests/test_cls.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+from mock import Mock
+import pytest
+
+from pyee import EventEmitter
+from pyee.cls import evented, on
+
+
+@evented
+class EventedFixture:
+ def __init__(self):
+ self.call_me = Mock()
+
+ @on("event")
+ def event_handler(self, *args, **kwargs):
+ self.call_me(self, *args, **kwargs)
+
+
+_custom_event_emitter = EventEmitter()
+
+
+@evented
+class CustomEmitterFixture:
+ def __init__(self):
+ self.call_me = Mock()
+ self.event_emitter = _custom_event_emitter
+
+ @on("event")
+ def event_handler(self, *args, **kwargs):
+ self.call_me(self, *args, **kwargs)
+
+
+class InheritedFixture(EventedFixture):
+ pass
+
+
+@pytest.mark.parametrize(
+ "cls", [EventedFixture, CustomEmitterFixture, InheritedFixture]
+)
+def test_evented_decorator(cls):
+ inst = cls()
+
+ inst.event_emitter.emit("event", "emitter is emitted!")
+
+ inst.call_me.assert_called_once_with(inst, "emitter is emitted!")
+
+ _custom_event_emitter.remove_all_listeners()