Exemple #1
0
    def test_segment_matches_data(self):
        segment      = Segment(name="Foo")
        true_rule_1  = Rule(group_id=1, field='sessions_count', comparator="MATCH", value=self.visitor_data['sessions_count'])
        false_rule_1 = Rule(group_id=1, field='sessions_count', comparator="MATCH", value=100)
        true_rule_2  = Rule(group_id=2, field='sessions_count', comparator="MATCH", value=self.visitor_data['sessions_count'])
        false_rule_2 = Rule(group_id=2, field='sessions_count', comparator="MATCH", value=100)
        
        # False
        segment.rules = []
        self.assertFalse(segment.matches_data(self.visitor_data))
        

        # True
        segment.rules = [true_rule_1]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # False
        segment.rules = [false_rule_1]
        self.assertFalse(segment.matches_data(self.visitor_data))

        # True OR False = True
        segment.rules = [true_rule_1, false_rule_1]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # False OR True = True
        segment.rules = [false_rule_1, true_rule_1]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # True OR True = True
        segment.rules = [true_rule_1, true_rule_1]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # False OR False = False
        segment.rules = [false_rule_1, false_rule_1]
        self.assertFalse(segment.matches_data(self.visitor_data))

        # True AND True = True
        segment.rules = [true_rule_1, true_rule_2]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # True AND False = False
        segment.rules = [true_rule_1, false_rule_2]
        self.assertFalse(segment.matches_data(self.visitor_data))

        # False AND True = False
        segment.rules = [false_rule_2, true_rule_1]
        self.assertFalse(segment.matches_data(self.visitor_data))

        # False AND False = False
        segment.rules = [false_rule_1, false_rule_2]
        self.assertFalse(segment.matches_data(self.visitor_data))

        # True AND (True OR False) = True
        segment.rules = [true_rule_1, true_rule_2, false_rule_2]
        self.assertTrue(segment.matches_data(self.visitor_data))

        # False AND (True OR False) = False
        segment.rules = [false_rule_1, true_rule_2, false_rule_2]
        self.assertFalse(segment.matches_data(self.visitor_data))