Remove setup.sh in favor of skyvern CLI (#4737)
This commit is contained in:
48
tests/unit/test_utils_templating.py
Normal file
48
tests/unit/test_utils_templating.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import re
|
||||
|
||||
import pytest
|
||||
|
||||
from skyvern.utils.templating import Constants, get_missing_variables
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"template,data,expected",
|
||||
[
|
||||
("", {}, set()),
|
||||
("Hello {{ name }}", {"name": "World"}, set()),
|
||||
("Hello {{ name }}", {"age": 30}, {"name"}),
|
||||
("{{ one }}", {"one": 1, "two": 2}, set()), # extra vars allowed
|
||||
# nested (dotted) variables
|
||||
("{{ user.name }}", {"user": {"name": "Alice"}}, set()),
|
||||
("{{ user.name }}", {"user": {"age": 30}}, {"user.name"}),
|
||||
# list access
|
||||
("{{ items[0] }}", {}, {"items"}),
|
||||
("{{ items[0] }}", {"items": [1, 2, 3]}, set()),
|
||||
("{{ items[0] }}", {"items": []}, {"items[0]"}),
|
||||
# deeply nested lists and dicts
|
||||
("{{ data.users[0].name }}", {"data": {"users": [{"name": "Bob"}]}}, set()),
|
||||
("{{ data.users[0].name }}", {"data": {"users": [{}]}}, {"data.users[0].name"}),
|
||||
("{{ data.users[0].name }}", {"data": {}}, {"data.users[0].name"}),
|
||||
],
|
||||
)
|
||||
def test_get_missing_variables(template, data, expected):
|
||||
missing_vars = get_missing_variables(template, data)
|
||||
assert missing_vars == expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"template,expected",
|
||||
[
|
||||
("{{ var }}", {"var"}),
|
||||
("{{ var.attr }}", {"var.attr"}),
|
||||
("{{ var[0] }}", {"var[0]"}),
|
||||
("{{ var['key'] }}", {"var['key']"}),
|
||||
('{{ var["key"] }}', {'var["key"]'}),
|
||||
("{{ var.attr[0] }}", {"var.attr[0]"}),
|
||||
("No variables here", set()),
|
||||
("{{ var1 }} and {{ var2.attr }}", {"var1", "var2.attr"}),
|
||||
],
|
||||
)
|
||||
def test_regex_missing_variable_pattern(template, expected):
|
||||
matches = set(re.findall(Constants.MissingVariablePattern, template))
|
||||
assert matches == expected
|
||||
Reference in New Issue
Block a user