def test_should_deserialize_complex_object(self): test_json = { "name": "John", "age": 51, "salary": { "basic": 10000.50, "allowance": 5000.75, }, "address": { "line1": "foo", "line2": "bar", "postal_code": "123456" }} deserialized_obj = pyobj_serializer.deserialize(json.dumps(test_json), ComplicatedPerson) self.assertEqual(deserialized_obj.__class__, ComplicatedPerson) self.assertEqual(deserialized_obj.name, 'John') self.assertEqual(deserialized_obj.age, 51) self.assertEqual(deserialized_obj.salary.__class__, Salary) self.assertEqual(deserialized_obj.salary.basic, 10000.50) self.assertEqual(deserialized_obj.salary.allowance, 5000.75) self.assertEqual(deserialized_obj.address.__class__, Address) self.assertEqual(deserialized_obj.address.line1, 'foo') self.assertEqual(deserialized_obj.address.line2, 'bar') self.assertEqual(deserialized_obj.address.postal_code, '123456')
def test_should_deserialize_when_list_attrs_are_empty(self): test_json = { 'objects': [] } deserialized_object = pyobj_serializer.deserialize(json.dumps(test_json), PersonList) self.assertEqual(deserialized_object.objects, [])
def test_should_deserialize_when_attrs_are_none(self): test_json = { 'name': None } deserialized_object = pyobj_serializer.deserialize(json.dumps(test_json), SimplePerson) self.assertEqual(deserialized_object.name, None)
def test_should_deserialize_simple_object(self): test_json = { 'name': 'John' } deserialized_obj = pyobj_serializer.deserialize(json.dumps(test_json), SimplePerson) self.assertEqual(deserialized_obj.__class__, SimplePerson) self.assertEqual(deserialized_obj.name, 'John')
def test_should_deserialize_to_dict_if_no_type_info_given_and_is_complex_type(self): test_generic_attrs = {'age': 10, 'nationality': 'unkown'} test_json = { 'name': 'John Doe', 'generic_attrs': test_generic_attrs } deserialized_object = pyobj_serializer.deserialize(json.dumps(test_json), GenericPerson) self.assertEqual(deserialized_object.__class__, GenericPerson) self.assertEqual(deserialized_object.name, 'John Doe') self.assertEqual(deserialized_object.generic_attrs, test_generic_attrs)
def test_should_deserialize_with_lists_in_object(self): test_json = { 'objects': [{'name': 'John'}, {'name': 'Doe'}] } deserialized_object = pyobj_serializer.deserialize(json.dumps(test_json), PersonList) self.assertEqual(deserialized_object.objects.__class__, list) self.assertEqual(len(deserialized_object.objects), 2) self.assertEqual(deserialized_object.objects[0].__class__, SimplePerson) self.assertEqual(deserialized_object.objects[0].name, 'John') self.assertEqual(deserialized_object.objects[1].__class__, SimplePerson) self.assertEqual(deserialized_object.objects[1].name, 'Doe')
def test_should_deserialize_object_with_tuples_in_it(self): test_json = { 'objects': [{'name': 'cujo', 'species': 'Canis lupus'}, {'name': 'jinxy', 'species': 'Canis lupus'}] } deserialized_object = pyobj_serializer.deserialize( json.dumps(test_json), AnimalList) self.assertEqual(deserialized_object.__class__, AnimalList) self.assertEqual(deserialized_object.objects.__class__, tuple) self.assertEqual(len(deserialized_object.objects), 2) self.assertEqual(deserialized_object.objects[0].__class__, Animal) self.assertEqual(deserialized_object.objects[0].name, 'cujo') self.assertEqual(deserialized_object.objects[0].species, 'Canis lupus') self.assertEqual(deserialized_object.objects[1].__class__, Animal) self.assertEqual(deserialized_object.objects[1].name, 'jinxy') self.assertEqual(deserialized_object.objects[1].species, 'Canis lupus')
def test_should_deserialize_with_simple_inheritance(self): test_json = { 'name': 'cujo', 'species': 'Canis lupus', 'breed': { 'name': 'Labrador', 'type': 'Retriever' } } deserialized_obj = pyobj_serializer.deserialize(json.dumps(test_json), Dog) self.assertEqual(deserialized_obj.__class__, Dog) self.assertEqual(deserialized_obj.name, 'cujo') self.assertEqual(deserialized_obj.species, 'Canis lupus') self.assertEqual(deserialized_obj.breed.__class__, Breed) self.assertEqual(deserialized_obj.breed.name, 'Labrador') self.assertEqual(deserialized_obj.breed.type, 'Retriever')