1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
from . import base
class TestType(base.SchemaNodeTestCase):
def test_single_type(self):
schema = {'type': 'null'}
self.add_schema(schema)
self.add_schema(schema)
self.assertResult(schema)
def test_single_type_unicode(self):
schema = {u'type': u'string'}
self.add_schema(schema)
self.assertResult(schema)
def test_redundant_integer_type(self):
self.add_schema({'type': 'integer'})
self.add_schema({'type': 'number'})
self.assertResult({'type': 'number'})
def test_typeless(self):
schema1 = {"title": "ambiguous schema"}
schema2 = {"grail": "We've already got one"}
result = dict(schema1)
result.update(schema2)
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult(result)
def test_typeless_incorporated(self):
schema1 = {"title": "Gruyere"}
schema2 = {"type": "boolean"}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"type": "boolean", "title": "Gruyere"})
def test_typeless_instantly_incorporated(self):
schema1 = {"type": "boolean"}
schema2 = {"title": "Gruyere"}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"type": "boolean", "title": "Gruyere"})
class TestRequired(base.SchemaNodeTestCase):
def test_combines(self):
schema1 = {"type": "object", "required": [
"series of statements", "definite proposition"]}
schema2 = {"type": "object", "required": ["definite proposition"]}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"type": "object", "required": [
"definite proposition"]})
def test_ignores_missing(self):
schema1 = {"type": "object"}
schema2 = {"type": "object", "required": ["definite proposition"]}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"type": "object", "required": [
"definite proposition"]})
def test_omits_all_missing(self):
schema1 = {"type": "object", "properties": {"spam": {}}}
schema2 = {"type": "object", "properties": {"eggs": {}}}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult(
{"type": "object", "properties": {"spam": {}, "eggs": {}}})
def test_maintains_empty(self):
seed = {"required": []}
schema1 = {"type": "object", "required": ["series of statements"]}
schema2 = {"type": "object", "required": ["definite proposition"]}
self.add_schema(seed)
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"type": "object", "required": []})
class TestAnyOf(base.SchemaNodeTestCase):
def test_multi_type(self):
self.add_schema({'type': 'boolean'})
self.add_schema({'type': 'null'})
self.add_schema({'type': 'string'})
self.assertResult({'type': ['boolean', 'null', 'string']})
def test_anyof_generated(self):
schema1 = {"type": "null", "title": "African or European Swallow?"}
schema2 = {"type": "boolean", "title": "Gruyere"}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"anyOf": [
schema1,
schema2
]})
def test_anyof_seeded(self):
schema1 = {"type": "null", "title": "African or European Swallow?"}
schema2 = {"type": "boolean", "title": "Gruyere"}
self.add_schema({"anyOf": [
{"type": "null"},
schema2
]})
self.add_schema(schema1)
self.assertResult({"anyOf": [
schema1,
schema2
]})
def test_list_plus_tuple(self):
schema1 = {"type": "array", "items": {"type": "null"}}
schema2 = {"type": "array", "items": [{"type": "null"}]}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"anyOf": [
schema1,
schema2
]})
def test_multi_type_and_anyof(self):
schema1 = {'type': ['boolean', 'null', 'string']}
schema2 = {"type": "boolean", "title": "Gruyere"}
self.add_schema(schema1)
self.add_schema(schema2)
self.assertResult({"anyOf": [
{'type': ['null', 'string']},
schema2
]})
|