import unittest from parameterized import parameterized from exp_utils.utils import get_param, split_s3_path class UtilsTestCase(unittest.TestCase): @parameterized.expand( [ ('1', [ { '1': 2 }, { '1': 3 }, ], 4, 2), ('1', [ { '2': 2 }, { '1': 3 }, ], 4, 3), ('3', [ { '1': 2 }, { '1': 3 }, ], None, None), ('3', [ { '1': 2 }, { '1': 3 }, ], 4, 4), ('3', [ {}, {}, {}, {}, {}, ], 4, 4), ('3', [], 4, 4), ] ) def test_get_param(self, param, sources, default, expected): actual = get_param(param, *sources, default=default) self.assertEqual(actual, expected) @parameterized.expand( [ ( 's3://dev-sme-data-decompressed/foo/bar/baz/streams_20200530_IT.json', ('dev-sme-data-decompressed', 'foo/bar/baz', 'streams_20200530_IT.json'), ), ( 's3://dev-sme-data-decompressed/streams_20200530_IT.json', ('dev-sme-data-decompressed', '', 'streams_20200530_IT.json'), ), ( 'foobar', ('', '', 'foobar'), ), ], ) def test_parse_path(self, param, expected): actual = split_s3_path(param) self.assertEqual(actual, expected)