forked from retoor/devplacepy
Update
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
import pytest
|
||||
|
||||
from devplacepy.services.devii.errors import ToolInputError
|
||||
from devplacepy.services.devii.interaction.schema import (
|
||||
validate_prompt_args,
|
||||
)
|
||||
|
||||
|
||||
def test_valid_confirm_prompt():
|
||||
req = validate_prompt_args(
|
||||
{
|
||||
"title": "Delete archive row?",
|
||||
"description": "Remote files are untouched.",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "confirm",
|
||||
"name": "delete",
|
||||
"label": "Delete archive row",
|
||||
"default": False,
|
||||
}
|
||||
],
|
||||
"submit_label": "Delete",
|
||||
"cancel_label": "Keep",
|
||||
}
|
||||
)
|
||||
assert req.title.startswith("Delete")
|
||||
assert req.widgets[0].type == "confirm"
|
||||
assert req.widgets[0].name == "delete"
|
||||
|
||||
|
||||
def test_choice_requires_options():
|
||||
with pytest.raises(ToolInputError):
|
||||
validate_prompt_args(
|
||||
{
|
||||
"title": "Env?",
|
||||
"widgets": [{"type": "choice", "name": "env", "label": "Env"}],
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def test_rejects_empty_widgets():
|
||||
with pytest.raises(ToolInputError):
|
||||
validate_prompt_args({"title": "x", "widgets": []})
|
||||
|
||||
|
||||
def test_rejects_bad_option_value():
|
||||
with pytest.raises(ToolInputError):
|
||||
validate_prompt_args(
|
||||
{
|
||||
"title": "Pick",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "choice",
|
||||
"name": "x",
|
||||
"label": "X",
|
||||
"options": [{"value": "BAD VALUE!", "label": "Bad"}],
|
||||
}
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def test_group_nesting_limit():
|
||||
leaf = {
|
||||
"type": "text",
|
||||
"name": "a",
|
||||
"label": "A",
|
||||
"required": False,
|
||||
}
|
||||
deep = {
|
||||
"type": "group",
|
||||
"label": "G1",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "group",
|
||||
"label": "G2",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "group",
|
||||
"label": "G3",
|
||||
"widgets": [
|
||||
{
|
||||
"type": "group",
|
||||
"label": "G4",
|
||||
"widgets": [leaf],
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
}
|
||||
with pytest.raises(ToolInputError):
|
||||
validate_prompt_args({"title": "Deep", "widgets": [deep]})
|
||||
Reference in New Issue
Block a user