Files
borgmatic/tests/unit/config/test_schema.py
T

161 lines
4.0 KiB
Python

import pytest
from borgmatic.config import schema as module
def test_get_properties_with_simple_object():
schema = {
'type': 'object',
'properties': dict(
[
('field1', {'example': 'Example'}),
]
),
}
assert module.get_properties(schema) == schema['properties']
def test_get_properties_merges_oneof_list_properties():
schema = {
'type': 'object',
'oneOf': [
{
'properties': dict(
[
('field1', {'example': 'Example 1'}),
('field2', {'example': 'Example 2'}),
]
),
},
{
'properties': dict(
[
('field2', {'example': 'Example 2'}),
('field3', {'example': 'Example 3'}),
]
),
},
],
}
assert module.get_properties(schema) == dict(
schema['oneOf'][0]['properties'], **schema['oneOf'][1]['properties']
)
def test_get_properties_interleaves_oneof_list_properties():
schema = {
'type': 'object',
'oneOf': [
{
'properties': dict(
[
('field1', {'example': 'Example 1'}),
('field2', {'example': 'Example 2'}),
('field3', {'example': 'Example 3'}),
]
),
},
{
'properties': dict(
[
('field4', {'example': 'Example 4'}),
('field5', {'example': 'Example 5'}),
]
),
},
],
}
assert module.get_properties(schema) == dict(
[
('field1', {'example': 'Example 1'}),
('field4', {'example': 'Example 4'}),
('field2', {'example': 'Example 2'}),
('field5', {'example': 'Example 5'}),
('field3', {'example': 'Example 3'}),
]
)
def test_parse_type_maps_schema_type_to_python_type():
module.parse_type('boolean') == bool
def test_parse_type_with_unknown_schema_type_raises():
with pytest.raises(ValueError):
module.parse_type('what')
def test_parse_type_respect_overrides_when_mapping_types():
module.parse_type('boolean', boolean=int) == int
@pytest.mark.parametrize(
'schema_type,target_types,match,expected_result',
(
(
'string',
{'integer', 'string', 'boolean'},
None,
True,
),
(
'string',
{'integer', 'boolean'},
None,
False,
),
(
'string',
{'integer', 'string', 'boolean'},
all,
True,
),
(
'string',
{'integer', 'boolean'},
all,
False,
),
(
['string', 'array'],
{'integer', 'string', 'boolean'},
None,
True,
),
(
['string', 'array'],
{'integer', 'boolean'},
None,
False,
),
(
['string', 'array'],
{'integer', 'string', 'boolean', 'array'},
all,
True,
),
(
['string', 'array'],
{'integer', 'string', 'boolean'},
all,
False,
),
(
['string', 'array'],
{'integer', 'boolean'},
all,
False,
),
),
)
def test_compare_types_returns_whether_schema_type_matches_target_types(
schema_type, target_types, match, expected_result
):
if match:
assert module.compare_types(schema_type, target_types, match) == expected_result
else:
assert module.compare_types(schema_type, target_types) == expected_result