11"""Tests for JSON Schema parser and generator."""
2+
23from __future__ import annotations
34
45import json
@@ -209,12 +210,17 @@ def test_generate_simple_schema():
209210 """Generate JSON Schema from Schema IR with one table."""
210211 from schemaforge .ir import ColumnType , Schema , Table
211212
212- schema = Schema (tables = [
213- Table (name = "User" , columns = [
214- Column (name = "id" , type = ColumnType .INTEGER , nullable = False ),
215- Column (name = "name" , type = ColumnType .STRING , nullable = True ),
216- ])
217- ])
213+ schema = Schema (
214+ tables = [
215+ Table (
216+ name = "User" ,
217+ columns = [
218+ Column (name = "id" , type = ColumnType .INTEGER , nullable = False ),
219+ Column (name = "name" , type = ColumnType .STRING , nullable = True ),
220+ ],
221+ )
222+ ]
223+ )
218224 gen = JSONSchemaGenerator ()
219225 output = gen .generate (schema )
220226 parsed = json .loads (output )
@@ -229,13 +235,18 @@ def test_generate_required_fields():
229235 """Non-nullable columns appear in required array."""
230236 from schemaforge .ir import ColumnType , Schema , Table
231237
232- schema = Schema (tables = [
233- Table (name = "User" , columns = [
234- Column (name = "id" , type = ColumnType .INTEGER , nullable = False ),
235- Column (name = "name" , type = ColumnType .STRING , nullable = True ),
236- Column (name = "email" , type = ColumnType .STRING , nullable = False ),
237- ])
238- ])
238+ schema = Schema (
239+ tables = [
240+ Table (
241+ name = "User" ,
242+ columns = [
243+ Column (name = "id" , type = ColumnType .INTEGER , nullable = False ),
244+ Column (name = "name" , type = ColumnType .STRING , nullable = True ),
245+ Column (name = "email" , type = ColumnType .STRING , nullable = False ),
246+ ],
247+ )
248+ ]
249+ )
239250 gen = JSONSchemaGenerator ()
240251 output = gen .generate (schema )
241252 parsed = json .loads (output )
@@ -249,12 +260,20 @@ def test_generate_enum():
249260 """ENUM column produces enum array in JSON Schema."""
250261 from schemaforge .ir import ColumnType , Schema , Table
251262
252- schema = Schema (tables = [
253- Table (name = "Item" , columns = [
254- Column (name = "status" , type = ColumnType .ENUM ,
255- type_args = {"values" : ["a" , "b" , "c" ]}),
256- ])
257- ])
263+ schema = Schema (
264+ tables = [
265+ Table (
266+ name = "Item" ,
267+ columns = [
268+ Column (
269+ name = "status" ,
270+ type = ColumnType .ENUM ,
271+ type_args = {"values" : ["a" , "b" , "c" ]},
272+ ),
273+ ],
274+ )
275+ ]
276+ )
258277 gen = JSONSchemaGenerator ()
259278 output = gen .generate (schema )
260279 parsed = json .loads (output )
@@ -266,12 +285,18 @@ def test_generate_max_length():
266285 """STRING with length becomes maxLength."""
267286 from schemaforge .ir import ColumnType , Schema , Table
268287
269- schema = Schema (tables = [
270- Table (name = "Item" , columns = [
271- Column (name = "name" , type = ColumnType .STRING ,
272- type_args = {"length" : 100 }),
273- ])
274- ])
288+ schema = Schema (
289+ tables = [
290+ Table (
291+ name = "Item" ,
292+ columns = [
293+ Column (
294+ name = "name" , type = ColumnType .STRING , type_args = {"length" : 100 }
295+ ),
296+ ],
297+ )
298+ ]
299+ )
275300 gen = JSONSchemaGenerator ()
276301 output = gen .generate (schema )
277302 parsed = json .loads (output )
@@ -283,12 +308,17 @@ def test_generate_defaults():
283308 """Column defaults appear in JSON Schema properties."""
284309 from schemaforge .ir import ColumnType , Schema , Table
285310
286- schema = Schema (tables = [
287- Table (name = "Item" , columns = [
288- Column (name = "active" , type = ColumnType .BOOLEAN , default = True ),
289- Column (name = "count" , type = ColumnType .INTEGER , default = 0 ),
290- ])
291- ])
311+ schema = Schema (
312+ tables = [
313+ Table (
314+ name = "Item" ,
315+ columns = [
316+ Column (name = "active" , type = ColumnType .BOOLEAN , default = True ),
317+ Column (name = "count" , type = ColumnType .INTEGER , default = 0 ),
318+ ],
319+ )
320+ ]
321+ )
292322 gen = JSONSchemaGenerator ()
293323 output = gen .generate (schema )
294324 parsed = json .loads (output )
@@ -301,11 +331,16 @@ def test_generate_datetime_format():
301331 """DATETIME column gets string with date-time format."""
302332 from schemaforge .ir import ColumnType , Schema , Table
303333
304- schema = Schema (tables = [
305- Table (name = "Item" , columns = [
306- Column (name = "created" , type = ColumnType .DATETIME ),
307- ])
308- ])
334+ schema = Schema (
335+ tables = [
336+ Table (
337+ name = "Item" ,
338+ columns = [
339+ Column (name = "created" , type = ColumnType .DATETIME ),
340+ ],
341+ )
342+ ]
343+ )
309344 gen = JSONSchemaGenerator ()
310345 output = gen .generate (schema )
311346 parsed = json .loads (output )
@@ -318,11 +353,16 @@ def test_generate_single_table_root_ref():
318353 """Single table produces a $ref to its definition."""
319354 from schemaforge .ir import ColumnType , Schema , Table
320355
321- schema = Schema (tables = [
322- Table (name = "User" , columns = [
323- Column (name = "id" , type = ColumnType .INTEGER ),
324- ])
325- ])
356+ schema = Schema (
357+ tables = [
358+ Table (
359+ name = "User" ,
360+ columns = [
361+ Column (name = "id" , type = ColumnType .INTEGER ),
362+ ],
363+ )
364+ ]
365+ )
326366 gen = JSONSchemaGenerator ()
327367 output = gen .generate (schema )
328368 parsed = json .loads (output )
0 commit comments