Esempio n. 1
0
 def setUp(self):
     self.external = Provider()
     self.registry = ProviderRegistry()
     self.stored = self.make_provider()
Esempio n. 2
0
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