def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed_number = matchers.from_raw(self.raw_number) assert isinstance(parsed_number, matchers.GreaterThanOrEqualMatcher) assert parsed_number._data_type == 'NUMBER' assert parsed_number._original_value == 5 assert parsed_number._value == 5 assert parsed_number.evaluate('a') is False assert parsed_number.evaluate([]) is False assert parsed_number.evaluate({}) is False assert parsed_number.evaluate(True) is False assert parsed_number.evaluate(object()) is False parsed_date = matchers.from_raw(self.raw_date) assert isinstance(parsed_date, matchers.GreaterThanOrEqualMatcher) assert parsed_date._data_type == 'DATETIME' assert parsed_date._original_value == int( calendar.timegm( (datetime(2019, 12, 21, 9, 30, 45, 0)).timetuple())) * 1000 assert parsed_date._value == int( calendar.timegm((datetime(2019, 12, 21, 9, 30, 0)).timetuple())) assert parsed_date.evaluate('a') is False assert parsed_date.evaluate([]) is False assert parsed_date.evaluate({}) is False assert parsed_date.evaluate(True) is False assert parsed_date.evaluate(object()) is False
def from_raw(raw_condition): """ Parse a condition from a JSON portion of splitChanges. :param raw_condition: JSON object extracted from a split's conditions array. :type raw_condition: dict :return: A condition object. :rtype: Condition """ parsed_partitions = [ partitions.from_raw(raw_partition) for raw_partition in raw_condition['partitions'] ] matcher_objects = [ matchers.from_raw(x) for x in raw_condition['matcherGroup']['matchers'] ] combiner = _MATCHER_COMBINERS[raw_condition['matcherGroup']['combiner']] label = raw_condition.get('label') condition_type = ConditionType( raw_condition.get('conditionType', ConditionType.WHITELIST)) return Condition(matcher_objects, combiner, parsed_partitions, label, condition_type)
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed_number = matchers.from_raw(self.raw_number) assert isinstance(parsed_number, matchers.EqualToMatcher) assert parsed_number._data_type == 'NUMBER' assert parsed_number._original_value == 5 assert parsed_number._value == 5 parsed_date = matchers.from_raw(self.raw_date) assert isinstance(parsed_date, matchers.EqualToMatcher) assert parsed_date._data_type == 'DATETIME' assert parsed_date._original_value == int( calendar.timegm( (datetime(2019, 12, 21, 9, 30, 45, 0)).timetuple())) * 1000 assert parsed_date._value == int( calendar.timegm((datetime(2019, 12, 21, 0, 0, 0)).timetuple()))
def test_to_json(self): """Test that the object serializes to JSON properly.""" as_json_number = matchers.from_raw(self.raw_number).to_json() assert as_json_number['unaryNumericMatcherData'][ 'dataType'] == 'NUMBER' assert as_json_number['unaryNumericMatcherData']['value'] == 5 assert as_json_number['matcherType'] == 'LESS_THAN_OR_EQUAL_TO' assert as_json_number['negate'] is False as_json_number = matchers.from_raw(self.raw_date).to_json() assert as_json_number['unaryNumericMatcherData'][ 'dataType'] == 'DATETIME' assert as_json_number['unaryNumericMatcherData']['value'] == int( calendar.timegm( (datetime(2019, 12, 21, 9, 30, 45)).timetuple())) * 1000 assert as_json_number['matcherType'] == 'LESS_THAN_OR_EQUAL_TO' assert as_json_number['negate'] is False
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed_number = matchers.from_raw(self.raw_number) assert isinstance(parsed_number, matchers.BetweenMatcher) assert parsed_number._data_type == 'NUMBER' assert parsed_number._negate is False assert parsed_number._original_lower == 1 assert parsed_number._original_upper == 3 assert parsed_number._lower == 1 assert parsed_number._upper == 3 parsed_date = matchers.from_raw(self.raw_date) assert isinstance(parsed_number, matchers.BetweenMatcher) assert parsed_date._data_type == 'DATETIME' assert parsed_date._original_lower == int( calendar.timegm( (datetime(2019, 12, 21, 9, 30, 45)).timetuple())) * 1000 assert parsed_date._original_upper == int( calendar.timegm( (datetime(2019, 12, 23, 9, 30, 45)).timetuple())) * 1000 assert parsed_date._lower == int( calendar.timegm((datetime(2019, 12, 21, 9, 30, 0)).timetuple())) assert parsed_date._upper == int( calendar.timegm((datetime(2019, 12, 23, 9, 30, 0)).timetuple()))
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.RegexMatcher) assert parsed._data == "^[a-z][A-Z][0-9]$" assert parsed._regex == re.compile("^[a-z][A-Z][0-9]$")
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.BooleanMatcher) assert parsed._data
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.DependencyMatcher) assert parsed._split_name == 'some_split' assert parsed._treatments == ['on', 'almost_on']
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.PartOfSetMatcher) assert parsed._whitelist == frozenset(['key1', 'key2', 'key3'])
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.UserDefinedSegmentMatcher) assert parsed._segment_name == 'some_segment'
def test_from_raw(self, mocker): """Test parsing from raw json/dict.""" parsed = matchers.from_raw(self.raw) assert isinstance(parsed, matchers.AllKeysMatcher)