def test_decode_as_type(self): @decode.from_object() class Person(object): def __init__(self, first_name, last_name): self.first_name = first_name self.last_name = last_name @decode.from_object() class Job(object): def __init__(self, title): self.title = title json_str = ('{"__type__": "Person", ' '"first_name": "shawn", ' '"last_name": "adams"}') self.assertEqual(decode._as_type_context.top, None) with decode.ensure_type(Person): self.assertEqual(decode._as_type_context.top, Person) decode.loader(json_str) # Test nested context with decode.ensure_type(Job): self.assertEqual(decode._as_type_context.top, Job) with self.assertRaises(ValidationError): decode.loader(json_str) self.assertEqual(decode._as_type_context.top, Person) self.assertEqual(decode._as_type_context.top, None)
def test_decode_as_type(self): @decode.from_object() class Person(object): def __init__(self, first_name, last_name): self.first_name = first_name self.last_name = last_name @decode.from_object() class Job(object): def __init__(self, title): self.title = title json_str = '{"__type__": "Person", ' '"first_name": "shawn", ' '"last_name": "adams"}' self.assertEqual(decode._as_type_context.top, None) with decode.ensure_type(Person): self.assertEqual(decode._as_type_context.top, Person) decode.loader(json_str) # Test nested context with decode.ensure_type(Job): self.assertEqual(decode._as_type_context.top, Job) with self.assertRaises(ValidationError): decode.loader(json_str) self.assertEqual(decode._as_type_context.top, Person) self.assertEqual(decode._as_type_context.top, None)
def wrapper(*args, **kw): with decode.ensure_type(expects): return jsonweb_response(func(*args, **kw))