from audience_common.utils.functional import traverse def test_traverse_upper() -> None: actual = traverse( { "a": "one", "b": {"c": {"d": "two", "e": "three"}, "f": "four"}, "g": "five", "h": ["six", {"i": "seven", "j": "eight"}], }, lambda v, p: str(v).upper(), ) assert actual == { "a": "ONE", "b": {"c": {"d": "TWO", "e": "THREE"}, "f": "FOUR"}, "g": "FIVE", "h": ["SIX", {"i": "SEVEN", "j": "EIGHT"}], }