def test_unregister_removes_handler_others(self): listener = PostgresListenerService() channel = factory.make_name("channel", sep="_").lower() listener.register(channel, sentinel.handler1) listener.register(channel, sentinel.handler2) listener.unregister(channel, sentinel.handler2) self.assertEquals({channel: [sentinel.handler1]}, listener.listeners)
def test_unregister_calls_unregisterChannel_when_connected(self): listener = PostgresListenerService() channel = factory.make_name("channel") listener.register(channel, sentinel.handler) listener.registeredChannels = True listener.connection = sentinel.connection mock_unregisterChannel = self.patch(listener, "unregisterChannel") listener.unregister(channel, sentinel.handler) self.assertThat(mock_unregisterChannel, MockCalledOnceWith(channel))
def test_unregister_doesnt_call_unregisterChannel_multi_handlers(self): listener = PostgresListenerService() channel = factory.make_name("channel", sep="_").lower() listener.register(channel, sentinel.handler) listener.register(channel, sentinel.other_handler) listener.registeredChannels = True listener.connection = sentinel.connection mock_unregisterChannel = self.patch(listener, "unregisterChannel") listener.unregister(channel, sentinel.handler) self.assertThat(mock_unregisterChannel, MockNotCalled())
def test_unregister_doesnt_call_unregisterChannel_multi_handlers(self): listener = PostgresListenerService() listener.HANDLE_NOTIFY_DELAY = listener.CHANNEL_REGISTRAR_DELAY = 0 channel = factory.make_name("channel", sep="_").lower() listener.register(channel, sentinel.handler) listener.register(channel, sentinel.other_handler) listener.registeredChannels = set() listener.connection = MagicMock() mock_unregisterChannel = self.patch(listener, "unregisterChannel") listener.unregister(channel, sentinel.handler) yield listener.channelRegistrarDone self.assertThat(mock_unregisterChannel, MockNotCalled())
def test_unregister_calls_unregisterChannel_when_connected(self): listener = PostgresListenerService() channel = factory.make_name("channel", sep="_").lower() listener.register(channel, sentinel.handler) yield listener.startService() try: yield listener.channelRegistrarDone self.assertIn(channel, listener.registeredChannels) listener.unregister(channel, sentinel.handler) yield listener.channelRegistrarDone finally: yield listener.stopService() self.assertNotIn(channel, listener.registeredChannels)
def test_unregister_raises_error_if_handler_does_not_match(self): listener = PostgresListenerService() channel = factory.make_name("channel", sep="_").lower() listener.register(channel, sentinel.handler) with ExpectedException(PostgresListenerUnregistrationError): listener.unregister(channel, sentinel.other_handler)
def test_unregister_raises_error_if_channel_not_registered(self): listener = PostgresListenerService() with ExpectedException(PostgresListenerUnregistrationError): listener.unregister(factory.make_name("channel"), sentinel.handler)
def test_unregister_removes_handler(self): listener = PostgresListenerService() channel = factory.make_name("channel") listener.register(channel, sentinel.handler) listener.unregister(channel, sentinel.handler) self.assertEquals({channel: []}, listener.listeners)