def test_messagebus_unsubscribe(): """ Test unsubscribe from messages. """ cb = mock.Mock() sender = object() ExampleMessage.subscribe(cb) Message.subscribe(cb, sender=sender) # broadcast local and global message, cb called two times ExampleMessage.broadcast(sender) Message.broadcast(sender) assert cb.call_count == 2 cb.reset_mock() # after unsubscribing globally, only the local message is received ExampleMessage.unsubscribe(cb) ExampleMessage.broadcast(sender) Message.broadcast(sender) assert_called_once_with_message(cb, Message, sender=sender) cb.reset_mock() # after unsubscribing locally, all subscriptions should be gone, cb not called Message.unsubscribe(cb, sender=sender) ExampleMessage.broadcast(sender) Message.broadcast(sender) assert not cb.called
def test_unsubscribe(self): ExampleMessage.subscribe(self.cb) Message.subscribe(self.cb, sender=self) # broadcast local and global message, cb called two times ExampleMessage.broadcast(self) Message.broadcast(self) assert self.cb.call_count == 2 self.cb.reset_mock() # after unsubscribing globally, only the local message is received ExampleMessage.unsubscribe(self.cb) ExampleMessage.broadcast(self) Message.broadcast(self) self.assert_called_once_with(self.cb, Message, sender=self) self.cb.reset_mock() # after unsubscribing locally, all subscriptions should be gone, cb not called Message.unsubscribe(self.cb, sender=self) ExampleMessage.broadcast(self) Message.broadcast(self) self.assertFalse(self.cb.called)