Skip to content

Commit dcf3111

Browse files
committed
chore: Add unit tests for optional parameters
1 parent dcf242c commit dcf3111

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

packages/toolbox-core/tests/test_protocol.py

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515

1616
from inspect import Parameter
17+
from typing import Optional
1718

1819
import pytest
1920

@@ -106,3 +107,65 @@ def test_parameter_schema_unsupported_type_error():
106107

107108
with pytest.raises(ValueError, match=expected_error_msg):
108109
schema.to_param()
110+
111+
def test_parameter_schema_string_optional():
112+
"""Tests an optional ParameterSchema with type 'string'."""
113+
schema = ParameterSchema(
114+
name="nickname",
115+
type="string",
116+
description="An optional nickname",
117+
required=False,
118+
)
119+
expected_type = Optional[str]
120+
121+
# Test __get_type()
122+
assert schema._ParameterSchema__get_type() == expected_type
123+
124+
# Test to_param()
125+
param = schema.to_param()
126+
assert isinstance(param, Parameter)
127+
assert param.name == "nickname"
128+
assert param.annotation == expected_type
129+
assert param.kind == Parameter.POSITIONAL_OR_KEYWORD
130+
assert param.default is None
131+
132+
133+
def test_parameter_schema_required_by_default():
134+
"""Tests that a parameter is required by default."""
135+
# 'required' is not specified, so it should default to True.
136+
schema = ParameterSchema(name="id", type="integer", description="A required ID")
137+
expected_type = int
138+
139+
# Test __get_type()
140+
assert schema._ParameterSchema__get_type() == expected_type
141+
142+
# Test to_param()
143+
param = schema.to_param()
144+
assert isinstance(param, Parameter)
145+
assert param.name == "id"
146+
assert param.annotation == expected_type
147+
assert param.default == Parameter.empty
148+
149+
150+
def test_parameter_schema_array_optional():
151+
"""Tests an optional ParameterSchema with type 'array'."""
152+
item_schema = ParameterSchema(name="", type="integer", description="")
153+
schema = ParameterSchema(
154+
name="optional_scores",
155+
type="array",
156+
description="An optional list of scores",
157+
items=item_schema,
158+
required=False,
159+
)
160+
expected_type = Optional[list[int]]
161+
162+
# Test __get_type()
163+
assert schema._ParameterSchema__get_type() == expected_type
164+
165+
# Test to_param()
166+
param = schema.to_param()
167+
assert isinstance(param, Parameter)
168+
assert param.name == "optional_scores"
169+
assert param.annotation == expected_type
170+
assert param.kind == Parameter.POSITIONAL_OR_KEYWORD
171+
assert param.default is None

0 commit comments

Comments
 (0)