def test_transform_value_in_cascading_dropdown(): valuespec = vs.CascadingDropdown(choices=[ ("a", "Title a", vs.TextInput()), ("b", "Title b", vs.Transform( vs.TextInput(), forth=lambda x: x if x == "lala" else x.upper(), back=lambda x: x + "aaa", )), ]) assert valuespec.transform_value(("a", "abc")) == ("a", "abc") assert valuespec.transform_value(("b", "lala")) == ("b", "lalaaaa") assert valuespec.transform_value(("b", "AAA")) == ("b", "AAAaaa")
def test_transform_value_in_tuple(): valuespec = vs.Tuple(elements=[ vs.Transform( vs.TextInput(), forth=lambda x: x if x == "lala" else x.upper(), back=lambda x: x + "aaa", ), vs.Transform( vs.TextInput(), forth=lambda x: x if x == "lala" else x.upper(), back=lambda x: x + "aaa", ), ]) assert valuespec.transform_value(("lala", "AAA")) == ("lalaaaa", "AAAaaa")
def test_transform_value_dict(): valuespec = vs.Dictionary( elements=[ ("a", vs.TextInput()), ] ) assert valuespec.transform_value({"a": "lala"}) == {"a": "lala"}
def test_transform_value_with_transform_vs(): valuespec = vs.Transform( vs.TextInput(), forth=lambda x: x if x == "lala" else x.upper(), back=lambda x: x + "aaa", ) assert valuespec.transform_value("lala") == "lalaaaa" assert valuespec.transform_value("AAA") == "AAAaaa"
def test_transform_value_in_dict(): valuespec = vs.Dictionary(elements=[ ("a", vs.Transform( vs.TextInput(), forth=lambda x: x if x == "lala" else x.upper(), back=lambda x: x + "aaa", )), ]) assert valuespec.transform_value({"a": "lala"}) == {"a": "lalaaaa"} assert valuespec.transform_value({"a": "AAA"}) == {"a": "AAAaaa"}
def test_transform_value_and_json(): # before all keys where upper case, then we decided to move to lower case, # but want to keep compatibility with old values saved in the config valuespec = vs.Transform( vs.Dictionary(elements=[ ("key1", vs.TextInput()), ]), forth=lambda x: {k.lower(): v for k, v in x.items()}, ) assert valuespec.transform_value({"KEY1": "value1"}) == {"key1": "value1"} assert valuespec.value_to_json({"KEY1": "value1"}) == {"key1": "value1"} assert valuespec.value_from_json({"key1": "value1"}) == {"key1": "value1"}
def test_transform_value(self) -> None: opt_vs = vs.Optional(valuespec=vs.Transform( valuespec=vs.Dictionary(elements=[ ("a", vs.TextInput()), ("b", vs.Age()), ]), forth=lambda p: {k: v + 10 if k == "b" else v for k, v in p.items()}, )) assert opt_vs.transform_value(None) is None assert opt_vs.transform_value({ "a": "text", "b": 10 }) == { "a": "text", "b": 20 }
def test_transform_value_no_transform_vs(): valuespec = vs.TextInput() assert valuespec.transform_value("lala") == "lala" assert valuespec.transform_value("AAA") == "AAA"