def test_more_complex(self): self.assertListEqual( json_process( { 'type': 'array', 'from': [{ 'type': 'jsonpointer', 'value': '/data/test_field' }, 3, { 'type': 'jsonpointer', 'value': '/data/test' }], 'value': { 'type': 'object', 'value': { 'field': { 'type': 'jsonpointer', 'value': '/$value' } } } }, {'data': { 'test_field': 'Hello', 'test': 'World', }}), [{ 'field': 'Hello' }, { 'field': 3 }, { 'field': 'World' }])
def test_array(self): self.assertListEqual(json_process({ 'type': 'array', 'from': { 'type': 'jsonpointer', 'value': '/data/items' }, 'value': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/$value/foreign' }, 'name': { 'type': 'jsonpointer', 'value': '/$value/name' }, 'index': { 'type': 'jsonpointer', 'value': '/$index0' } } } }, { 'data': { 'items': [ {'foreign': '100', 'name': 'item1'}, {'foreign': '150', 'name': 'item2'} ] } }), [{'id': '100', 'name': 'item1', 'index': 0}, {'id': '150', 'name': 'item2', 'index': 1}])
def test_cast_pop_if_empty(self): self.assertEqual( json_process( { 'type': 'object', 'value': { 'data': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'pop_if_empty' }, 'flag': True } }, {'id': 1}), { 'data': { 'id': 1 }, 'flag': True }) self.assertEqual( json_process( { 'type': 'object', 'value': { 'data': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'pop_if_empty' }, 'flag': True } }, {'id': None}), {'flag': True})
def test_list(self): self.assertListEqual( json_process( { 'type': 'array', 'from': [1, 2, 3], 'value': { 'type': 'jsonpointer', 'value': '/$value' } }, {}), [1, 2, 3])
def test_cast_int(self): self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'integer' } } }, {'id': '1'}), {'id': 1}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'integer' } } }, {'id': '-1'}), {'id': -1}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'integer' } } }, {'id': None}), {'id': None})
def test_no_array(self): self.assertListEqual(json_process({ 'type': 'array', 'from': { 'type': 'jsonpointer', 'value': '/data/items' }, 'value': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/$value/foreign' } } } }, { 'data': { } }), [])
def test_simple_return(self): self.assertEqual(json_process('Hello, world!', {}), 'Hello, world!') self.assertEqual(json_process({'a': 1}, {}), {'a': 1}) self.assertEqual(json_process({'type': 'object', 'value': {'id': 1}}, {}), {'id': 1})
def test_cast_null_if_empty(self): self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'null_if_empty' }, {'id': 1}), {'id': 1}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'null_if_empty' }, {'id': None}), None) self.assertEqual( json_process( { 'type': 'object', 'value': { 'value': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'null_if_empty' } } }, {'id': None}), {'value': None}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'value': { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'null_if_empty' } }, 'cast': 'null_if_empty' }, {'id': None}), None) self.assertEqual( json_process( { 'type': 'array', 'from': [], 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id' } }, 'cast': 'null_if_empty' }, {}), None) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'null_if_empty' } } }, {'id': None}), {'id': None}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'null_if_empty' } } }, {'id': False}), {'id': False}) self.assertEqual( json_process( { 'type': 'object', 'value': { 'id': { 'type': 'jsonpointer', 'value': '/id', 'cast': 'null_if_empty' } } }, {'id': 0}), {'id': 0})