Esempio n. 1
0
 def test_obj(s):
     data = {'a': 'b', 'c': 33}
     v = shm.obj(
         shm.prim(~vld.is_int).apply_to('a'),
         shm.prim(vld.is_int).apply_to('c'),
         shm.prim(~vld.required).apply_to('e'),
     )
     result = v.validate(data)
     assert data == result
Esempio n. 2
0
 def test_obj_required_undef_default(s, logger):
     data = {'c': 33}
     set_def = lambda *a, **kw: 'b'
     req = vld.required(default=set_def)
     v = shm.obj(
         shm.prim(req, ~vld.is_int).apply_to('a'),
         shm.prim(vld.is_int).apply_to('c'),
     )
     result = v.validate(data)
     assert {'a': 'b', 'c': 33} == result
Esempio n. 3
0
 def test_nested(s):
     data = {'a': 'b', 'c': 33, 'u': {'name': 'michael', 'age': 44}}
     user_schm = shm.obj(
         shm.prim(~vld.is_int).apply_to('name'),
         shm.prim(vld.is_int).apply_to('age'))
     data_schm = shm.obj(
         shm.prim(~vld.is_int).apply_to('a'),
         shm.prim(vld.is_int).apply_to('c'),
         user_schm.apply_to('u'),
     )
     rv = data_schm.validate(data)
     assert rv == data
Esempio n. 4
0
    def test_object_context(context, diagnostic_proc, logger):
        proclist = [lambda x=x, *a, **kw: 'abc' for x in range(5)]

        def run(data, state):
            logger.info(data)
            logger.info(state)

        proc = diagnostic_proc(run)
        c = obj(
            prim().apply_to('a', 'c'),
            #prim().apply_to('b', 'a'),
            #prim().apply_to('c', 'd'),
            proc,
            #p[3]().apply_to('d'),
            #p[4]().apply_to('e'),
        )
        # qualifier stack
        qs = c.runners[2]['qualifiers']
        assert qs._qualifiers['keys'] == set(['a', 'c'])
        c.validate({
            'a': 'bec',
            'b': 'bec',
            'c': 'bec',
            'd': 'bec',
            'e': 'bec',
            'f': 'bec',
            'g': 'bec',
        })
Esempio n. 5
0
 def test_rejects_int(s):
     s = shm.prim(~vld.is_int)
     for v in [33, 29, 0]:
         with pytest.raises(err.ValidationErrorStack) as e:
             v == s.validate(v)
         assert 'wrong data type. not expected: "int"' in str(
             e.value[0]).lower()
Esempio n. 6
0
 def test_validate_primitive(s):
     s = shm.prim()
     s.validate(None)
Esempio n. 7
0
 def test_required_default(s, logger):
     from vino.utils import _undef
     set_def = lambda *a, **kw: 'b'
     req = vld.required(default=set_def)
     v = shm.prim(req, ~vld.is_int)
     logger.info(v.validate())
Esempio n. 8
0
 def test_accepts_non_int(s):
     s = shm.prim(~vld.is_int)
     for v in [33.2, 29.1, 0.3, None, False, 'abc']:
         assert v == s.validate(v)
Esempio n. 9
0
 def test_accepts_int(s):
     s = shm.prim(vld.is_int)
     for v in [33, 29, 0]:
         assert v == s.validate(v)
Esempio n. 10
0
 def test_adds_object_type_processor_after_required(s):
     o = shm.obj(shm.prim().apply_to('field_1'))
     assert o.runners[1]['runner']._raw_processor is vld.is_object_type
Esempio n. 11
0
 def test_should_not_allow_prim(s):
     o = shm.obj(shm.prim().apply_to('field_1'))
     with pytest.raises(err.ValidationErrorStack) as e:
         o.validate('some string')
     assert 'Wrong data type' in str(e.value[0])