def _test_selector( selector_type, schema, valid_selections, invalid_selections, converter=None ): """Help test a selector.""" def default_converter(x): return x if converter is None: converter = default_converter # Validate selector configuration selector.validate_selector({selector_type: schema}) # Use selector in schema and validate vol_schema = vol.Schema({"selection": selector.selector({selector_type: schema})}) for selection in valid_selections: assert vol_schema({"selection": selection}) == { "selection": converter(selection) } for selection in invalid_selections: with pytest.raises(vol.Invalid): vol_schema({"selection": selection}) # Serialize selector selector_instance = selector.selector({selector_type: schema}) assert cv.custom_serializer(selector_instance) == { "selector": {selector_type: selector_instance.config} }
def test_multi_select_in_serializer(): """Test multi_select with custom_serializer.""" assert cv.custom_serializer(cv.multi_select({"paulus": "Paulus"})) == { "type": "multi_select", "options": { "paulus": "Paulus" }, }
def custom_serializer(schema: Any) -> Any: """Serialize additional types for voluptuous_serialize.""" if schema is cv_boolean: return {"type": "bool"} if schema is vol.Schema: return voluptuous_serialize.convert( schema, custom_serializer=custom_serializer) return cv.custom_serializer(schema)
def test_selector_in_serializer(): """Test selector with custom_serializer.""" assert cv.custom_serializer(selector.selector({"text": {}})) == { "selector": { "text": { "multiline": False, } } }
def test_positive_time_period_dict_in_serializer(): """Test positive_time_period_dict with custom_serializer.""" assert cv.custom_serializer(cv.positive_time_period_dict) == { "type": "positive_time_period_dict", }
def test_string_in_serializer(): """Test string with custom_serializer.""" assert cv.custom_serializer(cv.string) == { "type": "string", }
def test_boolean_in_serializer(): """Test boolean with custom_serializer.""" assert cv.custom_serializer(cv.boolean) == { "type": "boolean", }