def test_transition_next(self): _get = Mock() _get.side_effect = [ ContractStage(stage=self.stage1), ContractStage(stage=self.stage2) ] ContractStage.get_one = _get _fix = Mock(return_value=[]) ContractStage._fix_start_time = _fix self.active_contract.current_stage_id = self.stage1.id self.active_contract.current_stage = self.stage1 action = self.active_contract.transition(self.user) self.assertEquals(len(action), 2) self.assertTrue(_get.called) self.assertTrue(_fix.called_once) self.assertEquals(action[0].action_type, 'exited') self.assertEquals(action[0].action_detail['stage_name'], self.stage1.name) self.assertEquals(action[1].action_type, 'entered') self.assertEquals(action[1].action_detail['stage_name'], self.stage2.name) self.assertEquals(self.active_contract.current_stage_id, self.stage2.id)
def test_transition_backward(self): _get = Mock(return_value=[ContractStage(stage=self.stage1), ContractStage(stage=self.stage2)]) ContractStage.get_multiple = _get self.active_contract.current_stage_id = self.stage2.id self.active_contract.current_stage = self.stage2 action = self.active_contract.transition(self.user, destination=self.stage1.id) self.assertEquals(_get.call_count, 1) self.assertEquals(len(action), 1) self.assertEquals(action[0].action_type, 'reversion') self.assertTrue(_get.called_once) self.assertEquals(self.active_contract.current_stage_id, self.stage1.id)
def test_transition_start(self): _get = Mock(return_value=ContractStage(stage=self.stage1)) ContractStage.get_one = _get self.assertTrue(self.active_contract.current_stage_id is None) action = self.active_contract.transition(self.user) self.assertEquals(_get.call_count, 1) self.assertEquals(len(action), 1) self.assertEquals(action[0].action_type, 'entered') self.assertEquals(self.active_contract.current_stage_id, self.stage1.id)
def test_transition_last(self, complete): _get = Mock(return_value=ContractStage(stage=self.stage1)) ContractStage.get_one = _get self.active_contract.parent = ContractBaseFactory.build(description='test') self.active_contract.current_stage_id = self.stage3.id self.active_contract.current_stage = self.stage3 action = self.active_contract.transition(self.user) self.assertEquals(_get.call_count, 1) self.assertEquals(len(action), 1) self.assertEquals(action[0].action_type, 'exited') self.assertTrue(complete.called_once)