def test_listener_receives_both_user_and_event_args(self): listener_mock = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock, 1, 2, 3) emitter.emit('some_event', 'abc') listener_mock.assert_called_with('abc', 1, 2, 3)
def test_call_calls_and_returns_result_of_a_single_listener(self): listener_mock = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock, 1, 2, 3) result = emitter.call('some_event', 'abc') listener_mock.assert_called_with('abc', 1, 2, 3) self.assertEqual(result, listener_mock.return_value)
def test_call_fails_if_multiple_listeners_for_event(self): listener_mock1 = mock.Mock() listener_mock2 = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock1) emitter.on('some_event', listener_mock2) with self.assertRaises(AssertionError): emitter.call('some_event')
def test_multiple_listeners_for_same_event(self): listener_mock1 = mock.Mock() listener_mock2 = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock1, 1, 2, 3) emitter.on('some_event', listener_mock2, 4, 5) emitter.emit('some_event', 'abc') listener_mock1.assert_called_with('abc', 1, 2, 3) listener_mock2.assert_called_with('abc', 4, 5)
def test_listener_returning_false_is_removed(self): listener_mock1 = mock.Mock(return_value=False) listener_mock2 = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock1) emitter.on('some_event', listener_mock2) emitter.emit('some_event') emitter.emit('some_event') self.assertEqual(listener_mock1.call_count, 1) self.assertEqual(listener_mock2.call_count, 2)
def test_removing_all_listeners_for_an_event(self): listener_mock1 = mock.Mock() listener_mock2 = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock1) emitter.on('some_event', listener_mock2) emitter.off('some_event') emitter.emit('some_event') self.assertEqual(listener_mock1.call_count, 0) self.assertEqual(listener_mock2.call_count, 0)
def test_num_listeners_returns_total_number_of_listeners(self): listener_mock1 = mock.Mock() listener_mock2 = mock.Mock() emitter = utils.EventEmitter() self.assertEqual(emitter.num_listeners(), 0) emitter.on('some_event', listener_mock1) self.assertEqual(emitter.num_listeners(), 1) emitter.on('another_event', listener_mock1) emitter.on('another_event', listener_mock2) self.assertEqual(emitter.num_listeners(), 3)
def test_removing_a_listener(self): listener_mock1 = mock.Mock() listener_mock2 = mock.Mock() emitter = utils.EventEmitter() emitter.on('some_event', listener_mock1, 123) emitter.on('some_event', listener_mock1, 456) emitter.on('some_event', listener_mock2, 78) emitter.off('some_event', listener_mock1) emitter.emit('some_event') self.assertEqual(listener_mock1.call_count, 0) listener_mock2.assert_called_with(78)
def test_call_fails_if_zero_listeners_for_event(self): emitter = utils.EventEmitter() with self.assertRaises(AssertionError): emitter.call('some_event')