示例#1
0
 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)
示例#2
0
 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))
示例#3
0
 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())
示例#4
0
 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())
示例#5
0
    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)
示例#6
0
 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)
示例#7
0
 def test_unregister_raises_error_if_channel_not_registered(self):
     listener = PostgresListenerService()
     with ExpectedException(PostgresListenerUnregistrationError):
         listener.unregister(factory.make_name("channel"), sentinel.handler)
示例#8
0
 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)