diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-03-11 12:27:10 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-03-11 12:27:10 -0400 |
| commit | 009df6a3d041e517cc9efa74d3c87184357a5006 (patch) | |
| tree | 1f76d29b586de7052c1baaf286407d4245795788 /test/base | |
| parent | 043dc4a2c1eef11abc04919d0cc093f5424028e5 (diff) | |
| download | sqlalchemy-009df6a3d041e517cc9efa74d3c87184357a5006.tar.gz | |
- Added a new keyword argument ``once=True`` to :func:`.event.listen`
and :func:`.event.listens_for`. This is a convenience feature which
will wrap the given listener such that it is only invoked once.
Diffstat (limited to 'test/base')
| -rw-r--r-- | test/base/test_events.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/base/test_events.py b/test/base/test_events.py index 8d4728a9f..4ae89fe17 100644 --- a/test/base/test_events.py +++ b/test/base/test_events.py @@ -1045,6 +1045,31 @@ class RemovalTest(fixtures.TestBase): eq_(f1.mock.mock_calls, [call("x")]) eq_(f2.mock.mock_calls, [call("x"), call("y")]) + def test_once(self): + Target = self._fixture() + + m1 = Mock() + m2 = Mock() + m3 = Mock() + m4 = Mock() + + event.listen(Target, "event_one", m1) + event.listen(Target, "event_one", m2, once=True) + event.listen(Target, "event_one", m3, once=True) + + t1 = Target() + t1.dispatch.event_one("x") + t1.dispatch.event_one("y") + + event.listen(Target, "event_one", m4, once=True) + t1.dispatch.event_one("z") + t1.dispatch.event_one("q") + + eq_(m1.mock_calls, [call("x"), call("y"), call("z"), call("q")]) + eq_(m2.mock_calls, [call("x")]) + eq_(m3.mock_calls, [call("x")]) + eq_(m4.mock_calls, [call("z")]) + def test_propagate(self): Target = self._fixture() |
