def test_set_decorated(self): """ A decorator should be able to mark an object as decorated to prevent redecoration in the future. """ sig = '__mumbo_jumbo__' dec = BaseDecorator(sig) o = FakeObject() dec._set_decorated(o) self.assertTrue(hasattr(o, sig))
def test_has_decorated(self): """ A decorator should be able to determine if an object has already been decorated. """ sig = '__mumbo_jumbo__' dec = BaseDecorator(sig) o = FakeObject() self.assertFalse(dec._has_decorated(o)) setattr(o, sig, True) self.assertTrue(dec._has_decorated(o))
def test__call__stale(self): """ Tests the __call_method on a stale(decorated) object """ dec = BaseDecorator('__mumbo_jumbo__') dec._set_decorated = mock.Mock() dec._decorate = mock.Mock() dec._has_decorated = mock.Mock(return_value=True) o = FakeObject() config = {} dec(o, config) dec._set_decorated.assert_not_called() dec._has_decorated.assert_called_with(o) dec._decorate.assert_not_called()
def test_redecorate(self): """ Should not be able to redecorate an object """ def fake_decorate(obj, config): return obj dec = BaseDecorator('__mumbo_jumbo__') o = FakeObject() dec._decorate = mock.Mock(side_effect=fake_decorate) config = {} dec(o, config) dec(o, config) self.assertEquals(dec._decorate.call_count, 1)
def test__call__fresh(self): """ Tests the __call__ method on a fresh(undecorated) object. """ dec = BaseDecorator('__mumbo_jumbo__') dec._set_decorated = mock.Mock() dec._has_decorated = mock.Mock(return_value=False) o = FakeObject() dec._decorate = mock.Mock(return_value=o) config = {} dec(o, config) dec._set_decorated.assert_called_with(o) dec._decorate.assert_called_once_with(o, config) dec._has_decorated.assert_called_with(o)
def test_set_signature(self): """ Tests the _set_signature method """ dec = BaseDecorator('asig') expected_sig = '__test_signature__' sig = 'test_signature__' dec._set_signature(sig) self.assertEquals(dec._signature, expected_sig) sig = '__test_signature' dec._set_signature(sig) self.assertEquals(dec._signature, expected_sig) sig = 'test_signature' dec._set_signature(sig) self.assertEquals(dec._signature, expected_sig)