File: test_seed_schema.py

package info (click to toggle)
python-genson 1.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 344 kB
  • sloc: python: 1,385; makefile: 16
file content (66 lines) | stat: -rw-r--r-- 2,741 bytes parent folder | download
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
from . import base


class TestSeedTuple(base.SchemaNodeTestCase):

    def test_tuple(self):
        self.add_schema({'type': 'array', 'items': []})
        self.add_object([None])
        self.assertResult({'type': 'array', 'items': [{'type': 'null'}]})


class TestPatternProperties(base.SchemaNodeTestCase):

    def test_single_pattern(self):
        self.add_schema({'type': 'object', 'patternProperties': {
            r'^\d$': None}})
        self.add_object({'0': 0, '1': 1, '2': 2})
        self.assertResult({'type': 'object', 'patternProperties': {
            r'^\d$': {'type': 'integer'}}})

    def test_multi_pattern(self):
        self.add_schema({'type': 'object', 'patternProperties': {
            r'^\d$': None,
            r'^[a-z]$': None}})
        self.add_object({'0': 0, '1': 1, 'a': True, 'b': False})
        self.assertResult({'type': 'object', 'patternProperties': {
            r'^\d$': {'type': 'integer'},
            r'^[a-z]$': {'type': 'boolean'}}})

    def test_multi_pattern_multi_object(self):
        self.add_schema({'type': 'object', 'patternProperties': {
            r'^\d$': None,
            r'^[a-z]$': None}})
        self.add_object({'0': 0})
        self.add_object({'1': 1})
        self.add_object({'a': True})
        self.add_object({'b': False})
        self.assertResult({'type': 'object', 'patternProperties': {
            r'^\d$': {'type': 'integer'},
            r'^[a-z]$': {'type': 'boolean'}}})

    def test_existing_schema(self):
        self.add_schema({'type': 'object', 'patternProperties': {
            r'^\d$': {'type': 'boolean'}}})
        self.add_object({'0': 0, '1': 1, '2': 2})
        self.assertResult({'type': 'object', 'patternProperties': {
            r'^\d$': {'type': ['boolean', 'integer']}}})

    def test_prefers_existing_properties(self):
        self.add_schema({'type': 'object',
                         'properties': {'0': None},
                         'patternProperties': {r'^\d$': None}})
        self.add_object({'0': 0, '1': 1, '2': 2})
        self.assertResult({'type': 'object',
                           'properties': {'0': {'type': 'integer'}},
                           'patternProperties': {r'^\d$': {'type': 'integer'}},
                           'required': ['0']})

    def test_keeps_unrecognized_properties(self):
        self.add_schema({'type': 'object',
                         'patternProperties': {r'^\d$': None}})
        self.add_object({'0': 0, '1': 1, '2': 2, 'a': True})
        self.assertResult({'type': 'object',
                           'properties': {'a': {'type': 'boolean'}},
                           'patternProperties': {r'^\d$': {'type': 'integer'}},
                           'required': ['a']})