class BackendModelTestCase(TestCase): def setUp(self): self.url = "http://www.testme.com" self.data = dict(url=self.url) self.backend_cls = DefaultBackend self.response_cls = DefaultResponse self.backend = Backend( code_path='armstrong.apps.embeds.backends.default.DefaultBackend') def test_empty_model_fails(self): with self.assertRaises(ImproperlyConfigured): Backend() def test_fake_model_code_path_fails(self): with self.assertRaises(ImproperlyConfigured): Backend(code_path='fake') def test_model_inits_properly(self): self.assertTrue(isinstance(self.backend._backend, self.backend_cls)) def test_model_proxys_properly(self): for method_name in self.backend._proxy_to_backend: self.assertEqual( getattr(self.backend, method_name).im_self, self.backend._backend) def test_using_proxy_decorator(self): class Stub(self.backend_cls): proxy_me = proxy(lambda _: "made it here") but_not_me = lambda _: "unseen" self.backend._backend = Stub() self.backend._setup_backend_proxy_methods() self.assertEqual(self.backend.proxy_me(), "made it here") with self.assertRaises(AttributeError): self.backend.but_not_me() def test_model_calls_properly(self): response = self.backend.call(self.url) self.assertTrue(isinstance(response, self.response_cls)) def test_model_wraps_data_properly(self): wrapped = self.backend.wrap_response_data(self.data) self.assertTrue(isinstance(wrapped, self.response_cls)) self.assertDictEqual(wrapped._data, self.data) def test_wrapped_response_equals_original_response(self): response = self.backend.call(self.url) wrapped = self.backend.wrap_response_data(response._data) self.assertDictEqual(response._data, wrapped._data)