def test_onBecome_cancel(self): """ You can cancel the deferred returned by onBecome """ world = World(MagicMock()) obj = world.create('foo') d = world.onBecome(obj['id'], 'hey', 3) d.cancel() world.setAttr(obj['id'], 'hey', 3) self.assertFailure(d, defer.CancelledError)
def test_onBecome(self): """ You can get a Deferred which will fire when an attribute becomes a particular value. """ world = World(MagicMock()) obj = world.create('foo') d = world.onBecome(obj['id'], 'hey', 3) self.assertFalse(d.called) world.setAttr(obj['id'], 'hey', 3) self.assertEqual(self.successResultOf(d), 3) # make sure it isn't called again world.setAttr(obj['id'], 'hey', 2) world.setAttr(obj['id'], 'hey', 3)