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.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							1.3 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const test = require('tap').test
 | 
						|
const validator = require('is-my-json-valid')
 | 
						|
const build = require('..')
 | 
						|
 | 
						|
test('schema with const string', (t) => {
 | 
						|
  t.plan(2)
 | 
						|
 | 
						|
  const schema = {
 | 
						|
    type: 'object',
 | 
						|
    properties: {
 | 
						|
      foo: { const: 'bar' }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  const validate = validator(schema)
 | 
						|
  const stringify = build(schema)
 | 
						|
  const output = stringify({
 | 
						|
    foo: 'bar'
 | 
						|
  })
 | 
						|
 | 
						|
  t.equal(output, '{"foo":"bar"}')
 | 
						|
  t.ok(validate(JSON.parse(output)), 'valid schema')
 | 
						|
})
 | 
						|
 | 
						|
test('schema with const object', (t) => {
 | 
						|
  t.plan(2)
 | 
						|
 | 
						|
  const schema = {
 | 
						|
    type: 'object',
 | 
						|
    properties: {
 | 
						|
      foo: { const: { bar: 'baz' } }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  const validate = validator(schema)
 | 
						|
  const stringify = build(schema)
 | 
						|
  const output = stringify({
 | 
						|
    foo: { bar: 'baz' }
 | 
						|
  })
 | 
						|
 | 
						|
  t.equal(output, '{"foo":{"bar":"baz"}}')
 | 
						|
  t.ok(validate(JSON.parse(output)), 'valid schema')
 | 
						|
})
 | 
						|
 | 
						|
test('schema with const and invalid object', (t) => {
 | 
						|
  t.plan(2)
 | 
						|
 | 
						|
  const schema = {
 | 
						|
    type: 'object',
 | 
						|
    properties: {
 | 
						|
      foo: { const: { foo: 'bar' } }
 | 
						|
    },
 | 
						|
    required: ['foo']
 | 
						|
  }
 | 
						|
 | 
						|
  const stringify = build(schema)
 | 
						|
  try {
 | 
						|
    stringify({
 | 
						|
      foo: { foo: 'baz' }
 | 
						|
    })
 | 
						|
  } catch (err) {
 | 
						|
    t.match(err.message, /^Item .* does not match schema definition/, 'Given object has invalid const value')
 | 
						|
    t.ok(err)
 | 
						|
  }
 | 
						|
})
 |