Example #1
0
    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)
Example #2
0
    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)