40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import { Schema, SchemaRepresentation } from "effect"
|
|
import { describe, it } from "vitest"
|
|
import { deepStrictEqual } from "../../utils/assert.ts"
|
|
|
|
describe("toJsonSchemaMultiDocument", () => {
|
|
it("should handle multiple schemas", () => {
|
|
const A = Schema.String.annotate({ identifier: "id", description: "a" })
|
|
const B = Schema.String.annotate({ identifier: "id", description: "b" })
|
|
const C = Schema.Tuple([A, B])
|
|
const multiDocument = SchemaRepresentation.fromASTs([A.ast, B.ast, C.ast])
|
|
const jsonMultiDocument = SchemaRepresentation.toJsonSchemaMultiDocument(multiDocument)
|
|
deepStrictEqual(jsonMultiDocument, {
|
|
dialect: "draft-2020-12",
|
|
schemas: [
|
|
{ "$ref": "#/$defs/id" },
|
|
{ "$ref": "#/$defs/id1" },
|
|
{
|
|
"type": "array",
|
|
"prefixItems": [
|
|
{ "$ref": "#/$defs/id" },
|
|
{ "$ref": "#/$defs/id1" }
|
|
],
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
}
|
|
],
|
|
definitions: {
|
|
id: {
|
|
"type": "string",
|
|
"description": "a"
|
|
},
|
|
id1: {
|
|
"type": "string",
|
|
"description": "b"
|
|
}
|
|
}
|
|
})
|
|
})
|
|
})
|