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
			| 
											3 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') | ||
|  | }) |