def setUp(self): self.external = Provider() self.registry = ProviderRegistry() self.stored = self.make_provider()
class ProviderRegistryTestCase(TestCase): def setUp(self): self.external = Provider() self.registry = ProviderRegistry() self.stored = self.make_provider() def tearDown(self): ThirdPartyProvider.objects.all().delete() def make_provider(self): provider = ThirdPartyProvider.objects.create(api_endpoint='http://youtube.com/oembed', resource_type='video') URLScheme.objects.create(scheme='http://*.youtube.com', provider=provider) return provider def test_provider_type_internal(self): self.assertEqual('internal', self.registry._provider_type(TestInternalProvider)) def test_provider_type_external(self): self.assertEqual('external', self.registry._provider_type(self.external)) def test_ensure_populated_adds_stored(self): self.registry.ensure_populated() self.assertIn(self.stored, self.registry) def test_update_adds_missing_from_signal(self): provider = ThirdPartyProvider(api_endpoint='http://example.com', resource_type='photo') self.assertNotIn(provider, self.registry) # Signal updates provider.save() self.assertIn(provider, self.registry) def test_update_adds_missing_internal(self): self.registry.clear() self.assertNotIn(TestInternalProvider, self.registry) self.registry.update(TestInternalProvider) self.assertIn(TestInternalProvider, self.registry) def test_update(self): self.registry.clear() self.registry.ensure_populated() self.stored.foo = 'FOO' self.registry.update(self.stored) print self.registry._providers['external'] self.assertEqual(getattr(self.registry._providers['external'][0], 'foo', None), 'FOO') def test_unregister(self): self.registry.ensure_populated() self.assertIn(self.stored, self.registry) self.registry.unregister(self.stored) self.assertNotIn(self.stored, self.registry._providers['internal']) self.assertNotIn(self.stored, self.registry._providers['external']) def test_register(self): self.registry.clear() self.assertNotIn(TestInternalProvider, self.registry) self.registry.register(TestInternalProvider) self.assertIn(TestInternalProvider, self.registry) def test_match_prefers_internal(self): self.registry.clear() self.registry.ensure_populated() self.registry.register(TestInternalProvider) self.assertTrue(isinstance(self.registry.match('http://test.biz/foo'), TestInternalProvider)) def test_match_has_no_match(self): self.assertIsNone(self.registry.match('FOO')) def test_match_inactive(self): self.registry.clear() self.registry.ensure_populated() TestInternalProvider.is_active = False self.assertIsNone(self.registry.match('http://test.biz/foo')) TestInternalProvider.is_active = True