54 lines
1.9 KiB
Python
54 lines
1.9 KiB
Python
import re
|
|
|
|
import pytest
|
|
|
|
from ytdl_sub.script.script import Script
|
|
from ytdl_sub.script.script import ScriptBuilder
|
|
from ytdl_sub.script.types.map import Map
|
|
from ytdl_sub.script.types.resolvable import String
|
|
from ytdl_sub.script.utils.exceptions import ScriptBuilderMissingDefinitions
|
|
from ytdl_sub.script.utils.exceptions import VariableDoesNotExist
|
|
|
|
|
|
class TestScriptBuilder:
|
|
def test_partial_update_script(self):
|
|
# to be resolved later
|
|
entry_map = Map({String("title"): String("the title")})
|
|
|
|
script = ScriptBuilder(
|
|
{
|
|
"entry": "{ {} }",
|
|
"title": "{%map_get(entry, 'title')}",
|
|
"resolved_override": "{override} mom",
|
|
}
|
|
)
|
|
|
|
assert script.partial_build().resolve()
|
|
|
|
with pytest.raises(
|
|
ScriptBuilderMissingDefinitions,
|
|
match=re.escape("resolved_override is missing the following definitions: override"),
|
|
):
|
|
script.build()
|
|
|
|
script.add({"override": "hi"})
|
|
|
|
script.build()
|
|
|
|
# script.resolve(unresolvable={"entry"}, update=True)
|
|
# assert script.get("override") == String("hi")
|
|
# assert script.get("resolved_override") == String("hi mom")
|
|
#
|
|
# script.add(
|
|
# {
|
|
# "new_variable_titlecase": "{%titlecase(new_variable_upper)}",
|
|
# "new_variable": "{resolved_override} {title}",
|
|
# "new_variable_upper": "{%upper(new_variable)}",
|
|
# }
|
|
# ).resolve(resolved={"entry": entry_map}, update=True)
|
|
#
|
|
# assert script.get("title") == String("the title")
|
|
# assert script.get("new_variable") == String("hi mom the title")
|
|
# assert script.get("new_variable_upper") == String("HI MOM THE TITLE")
|
|
# assert script.get("new_variable_titlecase") == String("Hi Mom The Title")
|
|
# assert script.get("entry") == entry_map
|