def test_rules_in_groups(self): segment = Segment(name="Bar") rule_1 = Rule(group_id=1, field='foo', comparator="MATCH", value='bar') rule_2 = Rule(group_id=2, field='foo', comparator="MATCH", value='bar') rule_3 = Rule(group_id=2, field='foo', comparator="MATCH", value='bar') rule_4 = Rule(group_id=3, field='foo', comparator="MATCH", value='bar') rule_5 = Rule(group_id=3, field='foo', comparator="MATCH", value='bar') rule_6 = Rule(group_id=3, field='foo', comparator="MATCH", value='bar') segment.rules = [rule_1, rule_2, rule_3, rule_4, rule_5, rule_6] groups = segment.rules_in_groups() self.assertEqual(len(groups), 3) self.assertEqual(groups[1], [rule_1]) self.assertEqual(groups[2], [rule_2, rule_3]) self.assertEqual(groups[3], [rule_4, rule_5, rule_6])
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))