def test_extend_throws_error_when_service_id_does_not_exist(self): c = MedleyContainer() c._keys = Mock() c._keys.__contains__ = Mock(return_value=False) with self.assertRaises(Exception): c.extend('foo', self.foo)
def test_extends_adds_wrapped_function_to_factories_when_exists(self): c = MedleyContainer() c._keys = set(['foo']) c._values = {'foo': self.foo} factories = set([self.foo]) with patch.object(c, '_factories') as f: f.__contains__.side_effect = factories.__contains__ f.add.side_effect = factories.add f.remove.side_effect = factories.remove c.extend('foo', self.bar) f.__contains__.assert_called_with(self.foo) f.remove.assert_called_once() f.add.assert_called_once()
def test_create_extends_decorator_calls_extend(self): c = MedleyContainer() c.extend = Mock() @c.extends('foo') def foo(c): return 'bar' c.extend.assert_called_once()
def test_extends_wraps_function_and_calls_setitem(self): c = MedleyContainer() c._keys = set(['foo']) c._values = {'foo': self.foo} with patch.object(MedleyContainer, '__setitem__', wraps=c.__setitem__) as setitem: result = c.extend('foo', self.bar) self.assertEqual(type(result), types.FunctionType) self.assertEqual(c['foo'], result(c)) setitem.assert_called_once()
def test_extend_throws_error_if_second_argument_is_not_function_def(self): c = MedleyContainer() with self.assertRaises(Exception): c.extend('foo', 'bar')
def test_extend_throws_error_if_service_id_is_not_function_def(self): c = MedleyContainer() c._values = {'foo': 'bar'} with self.assertRaises(Exception): c.extend('foo', self.foo)