def test__vote_helper_success(self): """ Verifies the function updates decision properly on success.""" strategy_hash.STRATEGY_HASH = {"AlwaysFail": AlwaysFailStrategy, "AlwaysSucceed" : AlwaysSucceedStrategy} decision = vote._vote_helper(self.member, self.bill2) # Make sure decision was initialized. self.assertEqual(decision.member, self.member._id) self.assertEqual(decision.bill, self.bill2._id) self.assertTrue(len(decision.for_stances) > 0) self.assertTrue(len(decision.agn_stances) > 0) # Make sure decision metrics were updated. Just test a few self.assertNotEquals(decision.MI_stance, None) self.assertTrue(len(decision.groups_for) > 0) # Verify that the decision was made. self.assertEquals(decision.strategy, "AlwaysSucceedStrategy") self.assertTrue(len(decision.reason) >= 0) self.assertTrue(len(decision.downside) >= 0) # Make sure the decision was stored in the DB decision_in_db = self.DB.find_one(db_constants.DECISIONS, {"member": decision.member}) self.assertEquals(decision.strategy, decision_in_db.strategy) for stance1, stance2 in zip(decision.reason, decision_in_db.reason): self.assertTrue(stance1.__dict__, stance2.__dict__) for stance1, stance2 in zip(decision.downside, decision_in_db.downside): self.assertEquals(stance1.__dict__, stance2.__dict__)
def test__vote_helper_fails(self): """ Verifies that false is returned if strategies fail.""" strategy_hash.STRATEGY_HASH = {"AlwaysFail": AlwaysFailStrategy, "AlwaysFail2" : AlwaysFailStrategy} result = vote._vote_helper(self.member, self.bill1) self.assertEquals(result.strategy, None) for _ in self.DB.find(db_constants.DECISIONS): raise Exception("Decision Object should not be saved if no decision made")