Skip to content

Commit d8ea4e1

Browse files
committed
tests: include some additional tests and docs
1 parent 80f2efa commit d8ea4e1

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

aws_lambda_powertools/utilities/parameters/base.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,34 @@ def _get_multiple(self, path: str, **sdk_options) -> Dict[str, str]:
163163
raise NotImplementedError()
164164

165165

166-
def get_transform_method(key: str, transform: str) -> Union[str, None]:
166+
def get_transform_method(key: str, transform: str) -> Optional[str]:
167+
"""
168+
Determine the transform method
169+
170+
Examples
171+
-------
172+
>>> get_transform_method("key", "any_other_value")
173+
'any_other_value'
174+
>>> get_transform_method("key.json", "auto")
175+
'json'
176+
>>> get_transform_method("key.binary", "auto")
177+
'binary'
178+
>>> get_transform_method("key", "auto")
179+
None
180+
181+
Parameters
182+
---------
183+
key: str
184+
Only used when the tranform is "auto".
185+
transform: str
186+
Original transform method, only "auto" will try to detect the transform method by the key
187+
188+
Returns
189+
------
190+
Optional[str]:
191+
The transform method either when transform is "auto" then None, "json" or "binary" is returned
192+
or the original transform method
193+
"""
167194
if transform != "auto":
168195
return transform
169196

tests/functional/test_utilities_parameters.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,3 +1523,34 @@ def test_transform_value_ignore_error(mock_value):
15231523
value = parameters.base.transform_value(mock_value, "INCORRECT", raise_on_transform_error=False)
15241524

15251525
assert value is None
1526+
1527+
1528+
@pytest.mark.parametrize("original_transform", ["json", "binary", "other", "Auto"])
1529+
def test_get_transform_method_preserve_original(original_transform):
1530+
"""
1531+
Check if original transform method is returned for anything other than "auto"
1532+
"""
1533+
transform = parameters.base.get_transform_method("key", original_transform)
1534+
1535+
assert transform == original_transform
1536+
1537+
1538+
@pytest.mark.parametrize("extension", ["json", "binary"])
1539+
def test_get_transform_method_preserve_auto(extension, mock_name):
1540+
"""
1541+
Check if we can auto detect the transform method by the support extensions json / binary
1542+
"""
1543+
transform = parameters.base.get_transform_method(f"{mock_name}.{extension}", "auto")
1544+
1545+
assert transform == extension
1546+
1547+
1548+
@pytest.mark.parametrize("key", ["json", "binary", "example", "example.jsonp"])
1549+
def test_get_transform_method_preserve_auto_unhandled(key):
1550+
"""
1551+
Check if any key that does not end with a supported extension returns None when
1552+
using the transform="auto"
1553+
"""
1554+
transform = parameters.base.get_transform_method(key, "auto")
1555+
1556+
assert transform is None

0 commit comments

Comments
 (0)