diff --git a/tests/unit/base/test_serialize.py b/tests/unit/base/test_serialize.py index 8717aa1535..d27d4707b2 100644 --- a/tests/unit/base/test_serialize.py +++ b/tests/unit/base/test_serialize.py @@ -122,3 +122,18 @@ def test_does_not_change_other_types(self): actual = serialize.object('{"attribute":"value"}') self.assertEqual('{"attribute":"value"}', actual) + +class MapTestCase(unittest.TestCase): + def test_maps_func_to_list(self): + actual = serialize.map([1, 2, 3], lambda e: e * 2) + self.assertEqual([2, 4, 6], actual) + + def test_does_not_change_other_types(self): + actual = serialize.map("abc", lambda e: e * 2) + self.assertEqual("abc", actual) + + actual = serialize.map(123, lambda e: e * 2) + self.assertEqual(123, actual) + + actual = serialize.map({'some': 'val'}, lambda e: e * 2) + self.assertEqual({'some': 'val'}, actual) diff --git a/twilio/base/serialize.py b/twilio/base/serialize.py index a565dfdfbc..c0fcf1023f 100644 --- a/twilio/base/serialize.py +++ b/twilio/base/serialize.py @@ -63,3 +63,13 @@ def object(obj): if isinstance(obj, dict) or isinstance(obj, list): return json.dumps(obj) return obj + + +def map(lst, serialize_func): + """ + Applies serialize_func to every element in lst + """ + if not isinstance(lst, list): + return lst + return [serialize_func(e) for e in lst] +