참고소스 수정본
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import json
|
||||
|
||||
from guardrails_ai.types import Validator as ValidatorReference
|
||||
from guardrails.classes.schema.processed_schema import ProcessedSchema
|
||||
from guardrails.schema.primitive_schema import primitive_to_schema
|
||||
from guardrails.classes.output_type import OutputTypes
|
||||
from guardrails.validator_base import OnFailAction
|
||||
from tests.integration_tests.test_assets.validators import ValidChoices, ValidLength
|
||||
|
||||
|
||||
class TestPrimitiveSchema:
|
||||
# Did this one first because it's what I was most concerned about
|
||||
def test_choice_case_happy_path(self):
|
||||
with open(
|
||||
"tests/integration_tests/test_assets/json_schemas/string.json", "r"
|
||||
) as choice_case_json_file:
|
||||
expected_schema = json.loads(choice_case_json_file.read())
|
||||
|
||||
choice_validator = ValidChoices(choices=["north", "south", "east", "west"])
|
||||
length_validator = ValidLength(4, 5, "filter")
|
||||
|
||||
processed_schema: ProcessedSchema = primitive_to_schema(
|
||||
validators=[choice_validator, length_validator],
|
||||
description="Some string...",
|
||||
)
|
||||
|
||||
assert processed_schema.json_schema == expected_schema
|
||||
assert processed_schema.output_type == OutputTypes.STRING
|
||||
assert processed_schema.output_type == "str"
|
||||
assert processed_schema.validators == [
|
||||
ValidatorReference(
|
||||
id="valid-choices",
|
||||
on="$",
|
||||
on_fail=OnFailAction.EXCEPTION,
|
||||
kwargs={"choices": ["north", "south", "east", "west"]},
|
||||
),
|
||||
ValidatorReference(
|
||||
id="length",
|
||||
on="$",
|
||||
on_fail=OnFailAction.FILTER,
|
||||
kwargs={"min": 4, "max": 5},
|
||||
),
|
||||
]
|
||||
assert len(processed_schema.validator_map) == 1
|
||||
assert processed_schema.validator_map.get("$") == [
|
||||
choice_validator,
|
||||
length_validator,
|
||||
]
|
||||
Reference in New Issue
Block a user