def test_record_type_missing_key_in_value(value): regex = r'The fields from value \[.*\] differs from the fields of the record type \[.*\]' with pytest.raises(ValueError, match=regex): RecordType({ 'name': RecordTypeField('name', StringType()), 'age': RecordTypeField('age', IntType()) }).validate(value)
def test_record_type_optional_key_not_in_value(value): assert RecordType({ 'name': RecordTypeField('name', StringType()), 'age': RecordTypeField('age', UnionType([NullType(), IntType()])) }).validate(value) is True
def test_build_record_type_field(): field = RecordTypeField.build({ 'type': ['int', 'string'], 'name': 'myField' }) assert isinstance(field, RecordTypeField) assert isinstance(field.type, UnionType)
def test_record_type_wrong_value_type(value): with pytest.raises( ValueError, match= r'The value \[.*\] for field \[name\] should be \[StringType\]\.'): RecordType({ 'name': RecordTypeField('name', StringType()) }).validate(value)
def test_invalid_record_type(value): with pytest.raises( ValueError, match= r'The value \[(.|\s)*\] should have type dict but it has \[.*\].'): RecordType({ 'name': RecordTypeField('name', StringType()) }).validate(value)
def test_record_type_additional_key_in_value(value): regex = ( r'The fields from value \[.*\] differs from the fields of the record type \[.*\]. ' r'The following fields are not in the schema, but are present: \[.*\].' ) with pytest.raises(ValueError, match=regex): RecordType({ 'name': RecordTypeField('name', StringType()) }).validate(value)
def test_record_type_invalid_value_type(value): with pytest.raises(ValueError, match=r'Error validating value for field \[.*\]'): RecordType({ 'name': RecordTypeField('name', IntType()) }).validate(value)
def test_record_type(value): assert RecordType({ 'name': RecordTypeField('name', StringType()) }).validate(value) is True
def test_record_type_repr(value): msg = ( 'RecordType <{\'name\': RecordTypeField <name: name, type: StringType, ' 'doc: None, default: None, order: None, aliases: None>}>') assert str(RecordType({'name': RecordTypeField('name', StringType())})) == msg