You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.9 KiB
86 lines
1.9 KiB
4 years ago
|
'use strict'
|
||
|
|
||
|
const test = require('tap').test
|
||
|
const validator = require('is-my-json-valid')
|
||
|
const Long = require('long')
|
||
|
const build = require('..')
|
||
|
|
||
|
test('render a long as JSON', (t) => {
|
||
|
t.plan(2)
|
||
|
|
||
|
const schema = {
|
||
|
title: 'long',
|
||
|
type: 'integer'
|
||
|
}
|
||
|
|
||
|
const validate = validator(schema)
|
||
|
const stringify = build(schema)
|
||
|
const output = stringify(Long.fromString('18446744073709551615', true))
|
||
|
|
||
|
t.equal(output, '18446744073709551615')
|
||
|
t.ok(validate(JSON.parse(output)), 'valid schema')
|
||
|
})
|
||
|
|
||
|
test('render an object with long as JSON', (t) => {
|
||
|
t.plan(2)
|
||
|
|
||
|
const schema = {
|
||
|
title: 'object with long',
|
||
|
type: 'object',
|
||
|
properties: {
|
||
|
id: {
|
||
|
type: 'integer'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const validate = validator(schema)
|
||
|
const stringify = build(schema)
|
||
|
const output = stringify({
|
||
|
id: Long.fromString('18446744073709551615', true)
|
||
|
})
|
||
|
|
||
|
t.equal(output, '{"id":18446744073709551615}')
|
||
|
t.ok(validate(JSON.parse(output)), 'valid schema')
|
||
|
})
|
||
|
|
||
|
test('render an array with long as JSON', (t) => {
|
||
|
t.plan(2)
|
||
|
|
||
|
const schema = {
|
||
|
title: 'array with long',
|
||
|
type: 'array',
|
||
|
items: {
|
||
|
type: 'integer'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const validate = validator(schema)
|
||
|
const stringify = build(schema)
|
||
|
const output = stringify([Long.fromString('18446744073709551615', true)])
|
||
|
|
||
|
t.equal(output, '[18446744073709551615]')
|
||
|
t.ok(validate(JSON.parse(output)), 'valid schema')
|
||
|
})
|
||
|
|
||
|
test('render an object with a long additionalProperty as JSON', (t) => {
|
||
|
t.plan(2)
|
||
|
|
||
|
const schema = {
|
||
|
title: 'object with long',
|
||
|
type: 'object',
|
||
|
additionalProperties: {
|
||
|
type: 'integer'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const validate = validator(schema)
|
||
|
const stringify = build(schema)
|
||
|
const output = stringify({
|
||
|
num: Long.fromString('18446744073709551615', true)
|
||
|
})
|
||
|
|
||
|
t.equal(output, '{"num":18446744073709551615}')
|
||
|
t.ok(validate(JSON.parse(output)), 'valid schema')
|
||
|
})
|