Skip to main content
Glama
toJSON.test.js3.85 kB
'use strict' const { test } = require('node:test') const build = require('..') test('use toJSON method on object types', (t) => { t.plan(1) const stringify = build({ title: 'simple object', type: 'object', properties: { productName: { type: 'string' } } }) const object = { product: { name: 'cola' }, toJSON: function () { return { productName: this.product.name } } } t.assert.equal('{"productName":"cola"}', stringify(object)) }) test('use toJSON method on nested object types', (t) => { t.plan(1) const stringify = build({ title: 'simple array', type: 'array', items: { type: 'object', properties: { productName: { type: 'string' } } } }) const array = [ { product: { name: 'cola' }, toJSON: function () { return { productName: this.product.name } } }, { product: { name: 'sprite' }, toJSON: function () { return { productName: this.product.name } } } ] t.assert.equal('[{"productName":"cola"},{"productName":"sprite"}]', stringify(array)) }) test('not use toJSON if does not exist', (t) => { t.plan(1) const stringify = build({ title: 'simple object', type: 'object', properties: { product: { type: 'object', properties: { name: { type: 'string' } } } } }) const object = { product: { name: 'cola' } } t.assert.equal('{"product":{"name":"cola"}}', stringify(object)) }) test('not fail on null object declared nullable', (t) => { t.plan(1) const stringify = build({ title: 'simple object', type: 'object', nullable: true, properties: { product: { type: 'object', properties: { name: { type: 'string' } } } } }) t.assert.equal('null', stringify(null)) }) test('not fail on null sub-object declared nullable', (t) => { t.plan(1) const stringify = build({ title: 'simple object', type: 'object', properties: { product: { nullable: true, type: 'object', properties: { name: { type: 'string' } } } } }) const object = { product: null } t.assert.equal('{"product":null}', stringify(object)) }) test('on non nullable null sub-object it should coerce to {}', (t) => { t.plan(1) const stringify = build({ title: 'simple object', type: 'object', properties: { product: { nullable: false, type: 'object', properties: { name: { type: 'string' } } } } }) const object = { product: null } const result = stringify(object) t.assert.equal(result, JSON.stringify({ product: {} })) }) test('on non nullable null object it should coerce to {}', (t) => { t.plan(1) const stringify = build({ title: 'simple object', nullable: false, type: 'object', properties: { product: { nullable: false, type: 'object', properties: { name: { type: 'string' } } } } }) const result = stringify(null) t.assert.equal(result, '{}') }) test('on non-nullable null object it should skip rendering, skipping required fields checks', (t) => { t.plan(1) const stringify = build({ title: 'simple object', nullable: false, type: 'object', properties: { product: { nullable: false, type: 'object', properties: { name: { type: 'string' } } } }, required: ['product'] }) const result = stringify(null) t.assert.equal(result, '{}') })

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/krtw00/search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server