Buckets:
ktongue/docker_container / .cache /opencode /node_modules /json-schema-ref-resolver /test /collisions.test.js
| const assert = require('node:assert/strict') | |
| const { test } = require('node:test') | |
| const { RefResolver } = require('../index.js') | |
| test('should not throw if there is a same schema with a same id', () => { | |
| const refResolver = new RefResolver() | |
| const schemaId = 'schemaId' | |
| const schema = { | |
| $id: schemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| refResolver.addSchema(schema) | |
| refResolver.addSchema(schema) | |
| const resolvedSchema = refResolver.getSchema(schemaId) | |
| assert.deepStrictEqual(resolvedSchema, schema) | |
| }) | |
| test('should throw if there is a same schema with a same id (allowEqualDuplicates === false)', () => { | |
| const refResolver = new RefResolver({ | |
| allowEqualDuplicates: false | |
| }) | |
| const schemaId = 'schemaId' | |
| const schema = { | |
| $id: schemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| refResolver.addSchema(schema) | |
| try { | |
| refResolver.addSchema(schema) | |
| assert.fail('should throw') | |
| } catch (err) { | |
| assert.equal(err.message, `There is already another schema with id "${schemaId}".`) | |
| } | |
| }) | |
| test('should throw if there is another schema with a same id', () => { | |
| const refResolver = new RefResolver() | |
| const schemaId = 'schemaId' | |
| const schema1 = { | |
| $id: schemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| const schema2 = { | |
| $id: schemaId, | |
| type: 'object', | |
| properties: { | |
| bar: { type: 'string' } | |
| } | |
| } | |
| refResolver.addSchema(schema1) | |
| try { | |
| refResolver.addSchema(schema2) | |
| assert.fail('should throw') | |
| } catch (err) { | |
| assert.equal(err.message, `There is already another schema with id "${schemaId}".`) | |
| } | |
| const resolvedSchema = refResolver.getSchema(schemaId) | |
| assert.deepStrictEqual(resolvedSchema, schema1) | |
| }) | |
| test('should not throw if there is a same sub schema with a same id', () => { | |
| const refResolver = new RefResolver() | |
| const subSchemaId = 'subSchemaId' | |
| const schema1 = { | |
| $id: 'schemaId1', | |
| definitions: { | |
| subSchema: { | |
| $id: subSchemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| const schema2 = { | |
| $id: 'schemaId2', | |
| definitions: { | |
| subSchema: { | |
| $id: subSchemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| refResolver.addSchema(schema1) | |
| refResolver.addSchema(schema2) | |
| const resolvedSchema = refResolver.getSchema(subSchemaId) | |
| assert.deepStrictEqual(resolvedSchema, schema1.definitions.subSchema) | |
| assert.deepStrictEqual(resolvedSchema, schema2.definitions.subSchema) | |
| }) | |
| test('should throw if there is another different sub schema with a same id', () => { | |
| const refResolver = new RefResolver() | |
| const subSchemaId = 'subSchemaId' | |
| const schema1 = { | |
| $id: 'schemaId1', | |
| definitions: { | |
| subSchema: { | |
| $id: subSchemaId, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| const schema2 = { | |
| $id: 'schemaId2', | |
| definitions: { | |
| subSchema: { | |
| $id: subSchemaId, | |
| type: 'object', | |
| properties: { | |
| bar: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| refResolver.addSchema(schema1) | |
| try { | |
| refResolver.addSchema(schema2) | |
| assert.fail('should throw') | |
| } catch (err) { | |
| assert.equal(err.message, `There is already another schema with id "${subSchemaId}".`) | |
| } | |
| const resolvedSchema = refResolver.getSchema(subSchemaId) | |
| assert.deepStrictEqual(resolvedSchema, schema1.definitions.subSchema) | |
| assert.notDeepStrictEqual(resolvedSchema, schema2.definitions.subSchema) | |
| }) | |
| test('should throw if there is the same anchor in the same schema', () => { | |
| const refResolver = new RefResolver() | |
| const subSchemaAnchor = '#subSchemaId' | |
| const schema = { | |
| $id: 'schemaId1', | |
| definitions: { | |
| subSchema1: { | |
| $id: subSchemaAnchor, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| }, | |
| subSchema2: { | |
| $id: subSchemaAnchor, | |
| type: 'object', | |
| properties: { | |
| bar: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| try { | |
| refResolver.addSchema(schema) | |
| assert.fail('should throw') | |
| } catch (err) { | |
| assert.equal(err.message, 'There is already another anchor "#subSchemaId" in schema "schemaId1".') | |
| } | |
| }) | |
Xet Storage Details
- Size:
- 4.46 kB
- Xet hash:
- 20aec3fbf9bdc5f3bf0e16509047a3182d553e29a94768de6f356784db5609ee
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.