def test_unregisterChannel_calls_unlisten_once_for_system_channel(self): listener = PostgresListenerService() listener.connection = MagicMock() cursor = MagicMock() listener.connection.cursor.return_value = cursor channel = factory.make_name("sys", sep="_").lower() listener.unregisterChannel(channel) self.assertThat(cursor.execute, MockCalledOnceWith("UNLISTEN %s;" % channel))
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_unregisterChannel_calls_unlisten_per_action_for_channel(self): listener = PostgresListenerService() listener.connection = MagicMock() cursor = MagicMock() listener.connection.cursor.return_value = cursor channel = factory.make_name("node") listener.unregisterChannel(channel) self.assertThat( cursor.execute, MockCallsMatch(call("UNLISTEN %s_create;" % channel), call("UNLISTEN %s_delete;" % channel), call("UNLISTEN %s_update;" % channel)))