full coverage
This commit is contained in:
parent
745ba5114a
commit
f9665ff066
2 changed files with 31 additions and 9 deletions
|
|
@ -91,14 +91,22 @@ class SubscriptionValueValidator(SubscriptionOutput, StringValidator):
|
||||||
self,
|
self,
|
||||||
name,
|
name,
|
||||||
value,
|
value,
|
||||||
|
config: ConfigFile,
|
||||||
presets: List[str],
|
presets: List[str],
|
||||||
indent_overrides: List[str],
|
indent_overrides: List[str],
|
||||||
subscription_value: Optional[str],
|
subscription_value: Optional[str],
|
||||||
):
|
):
|
||||||
super().__init__(name=name, value=value, presets=presets, indent_overrides=indent_overrides)
|
super().__init__(name=name, value=value, presets=presets, indent_overrides=indent_overrides)
|
||||||
|
|
||||||
|
if self._leaf_name in config.presets.keys:
|
||||||
|
raise self._validation_exception(
|
||||||
|
f"{self._leaf_name} conflicts with an existing preset name and cannot be "
|
||||||
|
f"used as a subscription name"
|
||||||
|
)
|
||||||
|
|
||||||
if subscription_value is None:
|
if subscription_value is None:
|
||||||
raise self._validation_exception(
|
raise self._validation_exception(
|
||||||
f"Subscription {name} is a string, but the subscription value "
|
f"Subscription {self._leaf_name} is a string, but the subscription value "
|
||||||
f"is not set to an override variable"
|
f"is not set to an override variable"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -136,15 +144,11 @@ class SubscriptionValidator(SubscriptionOutput):
|
||||||
obj_name = f"{name}.{key}" if name else key
|
obj_name = f"{name}.{key}" if name else key
|
||||||
|
|
||||||
if isinstance(obj, str):
|
if isinstance(obj, str):
|
||||||
if key in config.presets.keys:
|
|
||||||
raise self._validation_exception(
|
|
||||||
f"{key} conflicts with an existing preset name and cannot be "
|
|
||||||
f"used as a subscription name"
|
|
||||||
)
|
|
||||||
self._children.append(
|
self._children.append(
|
||||||
SubscriptionValueValidator(
|
SubscriptionValueValidator(
|
||||||
name=obj_name,
|
name=obj_name,
|
||||||
value=obj,
|
value=obj,
|
||||||
|
config=config,
|
||||||
presets=presets,
|
presets=presets,
|
||||||
indent_overrides=indent_overrides,
|
indent_overrides=indent_overrides,
|
||||||
subscription_value=subscription_value,
|
subscription_value=subscription_value,
|
||||||
|
|
|
||||||
|
|
@ -272,12 +272,30 @@ def test_subscription_file_bad_value(config_file: ConfigFile):
|
||||||
|
|
||||||
def test_subscription_file_using_value_when_not_defined(config_file: ConfigFile):
|
def test_subscription_file_using_value_when_not_defined(config_file: ConfigFile):
|
||||||
with mock_load_yaml(
|
with mock_load_yaml(
|
||||||
preset_dict={"sub_name": "single value, __value__ not defined"}
|
preset_dict={"[INDENTS_IN_ERR_MSG]": {"sub_name": "single value, __value__ not defined"}}
|
||||||
), pytest.raises(
|
), pytest.raises(
|
||||||
ValidationException,
|
ValidationException,
|
||||||
match=re.escape(
|
match=re.escape(
|
||||||
f"Subscription sub_name is a string, but "
|
"Validation error in [INDENTS_IN_ERR_MSG].sub_name: Subscription "
|
||||||
f"the subscription value is not set to an override variable"
|
"sub_name is a string, but the subscription value is not set to an override variable"
|
||||||
|
),
|
||||||
|
):
|
||||||
|
_ = Subscription.from_file_path(config=config_file, subscription_path="mocked")
|
||||||
|
|
||||||
|
|
||||||
|
def test_subscription_file_using_conflicting_preset_name(config_file: ConfigFile):
|
||||||
|
with mock_load_yaml(
|
||||||
|
preset_dict={
|
||||||
|
"[INDENTS_IN_ERR_MSG]": {
|
||||||
|
"[ANOTHER]": {"jellyfin_tv_show_by_date": "single value, __value__ not defined"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
), pytest.raises(
|
||||||
|
ValidationException,
|
||||||
|
match=re.escape(
|
||||||
|
"Validation error in [INDENTS_IN_ERR_MSG].[ANOTHER].jellyfin_tv_show_by_date: "
|
||||||
|
"jellyfin_tv_show_by_date conflicts with an existing preset name and cannot be used "
|
||||||
|
"as a subscription name"
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
_ = Subscription.from_file_path(config=config_file, subscription_path="mocked")
|
_ = Subscription.from_file_path(config=config_file, subscription_path="mocked")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue