def test_convert_object_to_json(self): class Collaborator: name = 'Collaborator' desc = 'This is an object collaborator' some_int = 10 some_float = 10.0 c1 = { 'name': 'Collaborator', 'desc': 'This is an object collaborator', 'some_int': 10, 'some_float': 10.0 } c2 = Collaborator() self.assertEqual(Converter.serialize(c1), Converter.serialize(c2)) class Collaborator2(object): name = 'Collaborator' desc = 'This is an object collaborator' some_int = 10 some_float = 10.0 c3 = Collaborator2() self.assertEqual(Converter.serialize(c1), Converter.serialize(c3))
def _prepare_response_object(self, result, request): """Renders the result.subject into JSON if needed """ if 'application/json' in result.headers.values(): result.subject = Converter.serialize(result.subject) return result
def _prepare_response(self, result, request): """Renders the result to convert it to the appropiate format """ result = Converter.serialize(result) headers = {'content-type': 'application/json'} retval = response.Ok(result, headers) return retval
def _prepare_response(self, result, request): """ Renders the result to cobvert it to the appropiate format """ if type(result) is str: if re.match(UrlRegex.html_regex, result): retval = response.Ok(result, {'content-type': 'text/html'}) else: retval = response.Ok(result, {'content-type': 'text/plain'}) elif isinstance(result, response.Response): if 'application/json' in result.headers.values(): result.subject = Converter.serialize(result.subject) retval = result else: result = Converter.serialize(result) headers = {'content-type': 'application/json'} retval = response.Ok(result, headers) return retval
def test_can_convert_non_static_properties_in_objects(self): class Collaborator: def __init__(self, name): self.name = name self.assertEqual( Converter.serialize(Collaborator('C1')), {'name': 'C1'}) c2 = Collaborator('C2') c2.size = 3 self.assertEqual(Converter.serialize(c2), {'name': 'C2', 'size': 3}) c3 = Collaborator('C3') c3.collaborator = c2 c3.pene = decimal.Decimal('10.0') self.assertEqual(Converter.serialize(c3), { 'collaborator': { 'name': 'C2', 'size': 3}, 'pene': '10.0', 'name': 'C3' })
def test_convert_multi_level(self): class Collaborator: name = 'C1' class Collabortor2: name = 'C2' child = Collaborator() class Collaborator3: name = 'C3' child = Collabortor2() self.assertEqual( Converter.serialize(Collaborator3()), {'name': 'C3', 'child': {'name': 'C2', 'child': {'name': 'C1'}}} )
def test_convert_decimal(self): class Collaborator: data = decimal.Decimal('1.29') self.assertEqual(Converter.serialize(Collaborator()), {'data': '1.29'})