def test_transform_value_dict(): valuespec = vs.Dictionary( elements=[ ("a", vs.TextInput()), ] ) assert valuespec.transform_value({"a": "lala"}) == {"a": "lala"}
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_dictionary_value_to_json_conversion(value, result): with on_time("2020-03-02", "UTC"): # TODO: Obtain this valuespec directly by importing AlertBarChartDashlet # once it's available and simplify to: # abcd_vs = AlertBarChartDashlet.vs_parameters() abcd_vs = vs.Dictionary([ ("time_range", vs.Timerange(title="Time range")), ("time_resolution", vs.DropdownChoice(title="Time resolution", choices=[("h", "Show alerts per hour"), ("d", "Show alerts per day")])), ]) abcd_vs._render = "oneline" assert abcd_vs.value_to_text(value) == result json_value = abcd_vs.value_to_json(value) assert abcd_vs.value_from_json(json_value) == value
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_dictionary_value_to_json(elements, value, expected): assert vs.Dictionary(elements=elements).value_to_json(value) == expected