def test_remove_selection_provider(self): service = SelectionService() provider = BogusSelectionProvider(provider_id='Bogus') service.add_selection_provider(provider) service.remove_selection_provider(provider) self.assertFalse(service.has_selection_provider(provider.provider_id)) with self.assertRaises(ProviderNotRegisteredError): service.remove_selection_provider(provider)
def test_connect_listener_then_add_remove_provider(self): service = SelectionService() provider_id = 'Bogus' # Connect listener before provider is registered. listener = BogusListener() service.connect_selection_listener(provider_id, listener.on_selection_changed) # When the provider is first added, the listener should receive the # initial selection (as returned by provider.get_selection) provider = BogusSelectionProvider(provider_id=provider_id) expected = provider.get_selection() service.add_selection_provider(provider) selections = listener.selections self.assertEqual(len(selections), 1) self.assertEqual(selections[-1].content, expected.content) # When the provider changes the selection, the event arrive as usual. content = [1, 2, 3] provider.trigger_selection(content) self.assertEqual(len(selections), 2) self.assertEqual(selections[-1].content, content) # When we un-register the provider, a change in selection does not # generate a callback. service.remove_selection_provider(provider) provider.trigger_selection(content) self.assertEqual(len(selections), 2) # Finally, we register again and get the current selection. service.add_selection_provider(provider) self.assertEqual(len(selections), 3) self.assertEqual(selections[-1].content, expected.content)