"""Test cache utility methods.""" from typing import List, Optional, Tuple import pytest from pdp.utils.cache import make_complicated_cache_key @pytest.mark.parametrize( "key_vals, expect_exception, expected", [ pytest.param( [], True, None, id="Empty key_vals should raise exception", ), pytest.param( [("breed", "mutt")], False, "dogs@breed#mutt", id="Single key-val is ok", ), pytest.param( [("breed", "mutt"), ("age", "unknown")], False, "dogs@breed#mutt|age#unknown", id="Multiple key-vals are separated by DELIMITER_ITEM (|)", ), pytest.param( [("age", "unknown"), ("breed", "mutt")], False, "dogs@age#unknown|breed#mutt", id="Order of list matters", ), ], ) def test_make_complicated_cache_key( key_vals: List[Tuple[str, str]], expect_exception: bool, expected: Optional[str], ) -> None: if expect_exception: with pytest.raises(Exception): make_complicated_cache_key( "cats", key_vals, ) else: actual = make_complicated_cache_key( "dogs", key_vals, ) assert actual == expected