| # -*- 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() |