Skip to content

Commit b1058e9

Browse files
committed
Added tests to increase coverage
1 parent e5815fd commit b1058e9

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

tests/test_json_schema_flattener.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,3 +250,59 @@ def test_flatten_allof_empty_properties_after_merge() -> None:
250250
# Should not have properties/required if they're empty
251251
assert 'properties' not in flattened or not flattened.get('properties')
252252
assert 'required' not in flattened or not flattened.get('required')
253+
254+
255+
def test_flatten_allof_with_initial_properties() -> None:
256+
"""Test flattening when root schema has initial properties (line 229)."""
257+
from pydantic_ai._json_schema import flatten_allof
258+
259+
schema: dict[str, Any] = {
260+
'type': 'object',
261+
'properties': {'root_prop': {'type': 'string'}}, # Initial properties
262+
'allOf': [
263+
{
264+
'type': 'object',
265+
'properties': {'a': {'type': 'integer'}},
266+
'required': ['a'],
267+
},
268+
],
269+
}
270+
271+
flattened = flatten_allof(copy.deepcopy(schema))
272+
assert 'allOf' not in flattened
273+
assert 'root_prop' in flattened['properties']
274+
assert 'a' in flattened['properties']
275+
assert flattened['required'] == ['a']
276+
277+
278+
def test_flatten_allof_with_pattern_properties() -> None:
279+
"""Test flattening when members have patternProperties (lines 241, 250)."""
280+
from pydantic_ai._json_schema import flatten_allof
281+
282+
schema: dict[str, Any] = {
283+
'type': 'object',
284+
'allOf': [
285+
{
286+
'type': 'object',
287+
'properties': {'a': {'type': 'string'}},
288+
'patternProperties': {
289+
'^prefix_': {'type': 'string'},
290+
},
291+
},
292+
{
293+
'type': 'object',
294+
'properties': {'b': {'type': 'integer'}},
295+
'patternProperties': {
296+
'^suffix_': {'type': 'number'},
297+
},
298+
},
299+
],
300+
}
301+
302+
flattened = flatten_allof(copy.deepcopy(schema))
303+
assert 'allOf' not in flattened
304+
assert 'patternProperties' in flattened
305+
assert '^prefix_' in flattened['patternProperties']
306+
assert '^suffix_' in flattened['patternProperties']
307+
assert flattened['patternProperties']['^prefix_']['type'] == 'string'
308+
assert flattened['patternProperties']['^suffix_']['type'] == 'number'

0 commit comments

Comments
 (0)