def test_unpack_1(): e = V.Invalid({'ding': [V.Invalid('pod')], 'dong': [V.Invalid('piddle')]}) res = e.unpack_errors() assert res == {'ding': 'pod', 'dong': 'piddle'} e2 = V.Invalid({'': [e]}) res2 = e.unpack_errors() assert res == res2
def check_keys(data, context=None): allkeys = set(('x', 'y', 'text')) found = set(data.keys()) if allkeys.difference(found): raise V.Invalid("incomplete data") if found.difference(allkeys): raise V.Invalid("extra data")
def test_unpack_2(): "Empty string keys should be collapsed" e = V.Invalid({'ding': [V.Invalid('pod')], 'dong': [V.Invalid('piddle')]}) e2 = V.Invalid({'': [e]}) e3 = V.Invalid({'': [e2]}) r1 = e.unpack_errors() r2 = e2.unpack_errors() r3 = e3.unpack_errors() assert r1 == r3
def test_Invalid_unpack_errors(): error = V.Invalid(dict(foo=V.Invalid(dict(bar="flim")))) expected = {'foo': {'bar': "flim"}} result = error.unpack_errors() assert expected == result error = V.Invalid(dict(foo=dict(bar="flim"))) expected = {'foo': {'bar': "flim"}} result = error.unpack_errors() assert expected == result error = V.Invalid(V.Invalid(dict(foo="bar"))) expected = {'foo': "bar"} result = error.unpack_errors() assert expected == result
def test_unpack_3(): errors = dict(frog="My peachy frog hurts", dog="My dog has warts up and down his spine", insect="I would characterize this insect as flawed") e = V.Invalid(errors) u = e.unpack_errors() assert set(u) == set(('frog', 'dog', 'insect')) for v in u.itervalues(): assert isinstance(v, basestring) e2 = V.Invalid(dict(frog='squished')) u2 = e2.unpack_errors() assert u2 == dict(frog='squished') e3 = V.Invalid(errors, {'': e2}) u3 = e3.unpack_errors() assert set(u3) == set(('frog', 'dog', 'insect')) for k, v in u3.iteritems(): assert isinstance(v, basestring)
def len_d(v2, size, context=None): if len(v2) != size: raise V.Invalid("wrong size")
def test_Invalid(): error = V.Invalid("foo") assert error.errors == {None: "foo"} error = V.Invalid(dict(foo="bar")) assert error.errors == {'foo': "bar"}
def f(value, context): if not value in context: raise V.Invalid() return value
def f(value, context): if not value in context['database']: raise V.Invalid(msg) return True
def POST(request, data=None, item_id=None): if data == dict(do_raise=True): raise v.Invalid("You told me to raise") return "This is POST with item_id: %s and data: %s" % (item_id, data)