示例#1
0
 def test_validate_returns_error_unparsable_timestamp(self):
     test_field_object = {"Type":"timestamp", "LatestTime":"2019-03-14T14:54:20.000Z"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":"invalidTimeStamp"}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Failed to perform timestamp validation, error: ('Unknown string format:', 'invalidTimeStamp')", validation_result.details)
示例#2
0
 def test_validate_returns_error_enum_value_not_in_set(self):
     test_field_object = {"Type":"enum", "Values":"[\"alpha\", \"beta\", \"gamma\"]"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":"delta"}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Value 'delta' not in list of known values: [alpha, beta, gamma]", validation_result.details)
示例#3
0
 def test_validate_returns_error_timestamp_after_latest_time(self):
     test_field_object = {"Type":"timestamp", "LatestTime":"2019-03-14T14:54:20.000Z"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":"2019-03-14T14:56:20.000Z"}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Timestamp value '2019-03-14 14:56:20+00:00' occurs after latest limit '2019-03-14 14:54:20+00:00'", validation_result.details)
示例#4
0
 def test_validate_returns_error_decimal_value_above_upper_limit(self):
     test_field_object = {"Type":"decimal", "UpperLimit":100}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":101}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Value '101' is greater than upper limit '100'", validation_result.details)
示例#5
0
 def test_validate_returns_error_field_empty(self):
     test_field_object = {"Type":"decimal"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":""}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Field empty", validation_result.details)
示例#6
0
 def test_validate_returns_error_decimal_value_below_lower_limit(self):
     test_field_object = {"Type":"decimal", "LowerLimit":50}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":49}}
     validation_result = test_field.validate(test_data)
     self.assertFalse(validation_result.valid)
     self.assertEqual("Value '49' is less than lower limit '50'", validation_result.details)
示例#7
0
 def test_constructor_fails_no_type(self):
     input_field_object = {}
     try:
         Field("a.b.c", input_field_object)
         self.fail("Expected ValidatorException")
     except ValidatorException as e:
         self.assertEqual("Missing required configuration property 'Type' for field a.b.c={}", str(e))
示例#8
0
 def test_constructor_fails_invalid_latesttime(self):
     input_field_object = {"Type":"timestamp", "LatestTime":"invalidtimestamp"}
     try:
         Field("a.b.c", input_field_object)
         self.fail("Expected ValidatorException")
     except ValidatorException as e:
         self.assertEqual("Unable to parse configuration file timestamp LatestTime for field a.b.c={'Type': 'timestamp', 'LatestTime': 'invalidtimestamp'}, error: ('Unknown string format:', 'invalidtimestamp')", str(e))
示例#9
0
 def test_constructor_fails_no_key(self):
     input_field_object = {'Type': 'string'}
     try:
         Field("", input_field_object)
         self.fail("Expected ValidatorException")
     except ValidatorException as e:
         self.assertEqual("Invalid configuration property definition for field ={'Type': 'string'}", str(e))
示例#10
0
 def test_validate_returns_succeeds_value_equals_upper_limit(self):
     test_field_object = {"Type":"decimal", "UpperLimit":100}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":100}}
     validation_result = test_field.validate(test_data)
     self.assertTrue(validation_result.valid)
示例#11
0
 def test_get_field_value_returns_none_invalid_path(self):
     test_field_object = {"Type":"decimal"}
     test_field = Field("a.b.c", test_field_object)
     test_data = {"a":{"c":50}}
     self.assertIsNone(test_field._get_field_value("a.b", test_data))
示例#12
0
 def test_validate_returns_succeeds_enum_value_in_set(self):
     test_field_object = {"Type":"enum", "Values":"[\"alpha\", \"beta\", \"gamma\"]"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":"alpha"}}
     validation_result = test_field.validate(test_data)
     self.assertTrue(validation_result.valid)
示例#13
0
 def test_validate_returns_success_timestamp_after_earliest_time(self):
     test_field_object = {"Type":"timestamp", "EarliestTime":"2019-03-14T14:54:20.000Z"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":"2019-03-14T14:54:21.000Z"}}
     validation_result = test_field.validate(test_data)
     self.assertTrue(validation_result.valid)
示例#14
0
 def testFieldSerialization(self):
     test_field_object = {"Type":"timestamp", "EarliestTime":"2019-03-14T14:54:20.000Z"}
     test_field = Field("a.b.c", test_field_object)
     self.assertEqual('{"Path": "a.b.c", "Type": "timestamp", "UpperLimit": null, "LowerLimit": null, "Values": null, "Choices": null, "EqualsValue": null, "EarliestTime": "2019-03-14T14:54:20+00:00", "LatestTime": null, "AllowEmpty": false}', json.dumps(test_field.to_json()))
     self.assertEqual('{"Path": "a.b.c", "Type": "timestamp", "UpperLimit": null, "LowerLimit": null, "Values": null, "Choices": null, "EqualsValue": null, "EarliestTime": "2019-03-14T14:54:20+00:00", "LatestTime": null, "AllowEmpty": false}', str(test_field))
示例#15
0
 def test_constructor_succeeds_latesttime_now_keyword(self):
     input_field_object = {"Type":"timestamp", "LatestTime":"NOW"}
     actual_field = Field("a.b.c", input_field_object)
     self.assertTrue(actual_field.latest_time != None)
示例#16
0
 def test_constructor_succeeds_valid_latesttime(self):
     input_field_object = {"Type":"timestamp", "LatestTime":"2019-03-14T14:54:21.596Z"}
     actual_field = Field("a.b.c", input_field_object)
     self.assertEqual("2019-03-14 14:54:21+00:00", str(actual_field.latest_time))
示例#17
0
 def test_get_field_value_succeeds(self):
     test_field_object = {"Type":"decimal"}
     test_field = Field("a.b", test_field_object)
     test_data = {"a":{"b":50}}
     field_value = test_field._get_field_value("a.b", test_data)
     self.assertEqual(50, field_value)
示例#18
0
 def test_constructor_fails_no_field_config(self):
     self.assertEqual('{"Path": "a.b.c", "Type": null, "UpperLimit": null, "LowerLimit": null, "Values": null, "Choices": null, "EqualsValue": null, "EarliestTime": null, "LatestTime": null, "AllowEmpty": null}', str(Field("a.b.c")))