14
14
15
15
16
16
from inspect import Parameter
17
+ from typing import Optional
17
18
18
19
import pytest
19
20
@@ -106,3 +107,65 @@ def test_parameter_schema_unsupported_type_error():
106
107
107
108
with pytest .raises (ValueError , match = expected_error_msg ):
108
109
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