def test_filter_link_chained_match_tag(self): # Expected behavior: # Student is school 1? # Y:Student is grade 1? # Y:True # N:False # N:NoDecision leaf_link = MatchTag("grade", "1", if_true=Accept(), if_false=Reject()) root_link = MatchTag("school", "1", if_true=leaf_link) stu1 = get_dummy_student() stu2 = get_dummy_student() stu3 = get_dummy_student() stu4 = get_dummy_student() setattr(stu1, "school", "1") setattr(stu1, "grade", "1") setattr(stu2, "school", "1") setattr(stu2, "grade", "2") setattr(stu3, "school", "2") setattr(stu3, "grade", "1") setattr(stu4, "school", "2") setattr(stu4, "grade", "2") self.assertTrue(root_link.approve(stu1)) self.assertFalse(root_link.approve(stu2)) with self.assertRaises(NoDecision): root_link.approve(stu3) with self.assertRaises(NoDecision): root_link.approve(stu4)
def test_filter_link_match_tag(self): stu1 = get_dummy_student() stu2 = get_dummy_student() setattr(stu1, "school", "foo") setattr(stu2, "school", "bar") link_tf = MatchTag("school", "foo", if_true=Accept(), if_false=Reject()) link_t = MatchTag("school", "foo", if_true=Accept()) link_f = MatchTag("school", "foo", if_false=Reject()) link_null = MatchTag("school", "foo") self.assertTrue(link_tf.approve(stu1)) self.assertFalse(link_tf.approve(stu2)) self.assertTrue(link_t.approve(stu1)) with self.assertRaises(NoDecision): link_t.approve(stu2) with self.assertRaises(NoDecision): link_f.approve(stu1) self.assertFalse(link_f.approve(stu2)) with self.assertRaises(NoDecision): link_null.approve(stu1) with self.assertRaises(NoDecision): link_null.approve(stu2)