def test_update_missing_state(self): """We notice if no document was found to update""" f = FSM(state_id) f.state_coll = mock.MagicMock(spec=pymongo.collection.Collection, return_value=True) f.state_coll.update.return_value = None _update_state = { '$set': { 'ended': UTCNOW } } with self.assertRaises(Exception): f.update_state(_update_state)
def test_update_state_mongo_failed(self): """We notice if mongo failed while updating state""" f = FSM(state_id) f.state_coll = mock.MagicMock(spec=pymongo.collection.Collection, return_value=True) mocked_update = mock.MagicMock(side_effect=pymongo.errors.PyMongoError) f.state_coll.update = mocked_update _update_state = { '$set': { 'ended': UTCNOW } } with self.assertRaises(pymongo.errors.PyMongoError): f.update_state(_update_state)
def test_update_state(self): """State updating does the needful""" f = FSM(state_id) f.state_coll = mock.MagicMock(spec=pymongo.collection.Collection, return_value=True) _update_state = { '$set': { 'ended': UTCNOW } } # FSM Sets its state document ID attr properly self.assertEqual(f._id, fsm__id) f.update_state(_update_state) # FSM passes the needful to the update method f.state_coll.update.assert_called_once_with(fsm__id, _update_state)