redoc/lib/services/schema-helper.service.spec.ts

90 lines
2.4 KiB
TypeScript
Raw Normal View History

2016-07-01 18:33:42 +03:00
'use strict';
import { SchemaHelper } from './schema-helper.service';
2016-10-23 20:18:42 +03:00
import { SpecManager } from '../utils/spec-manager';
2016-07-01 18:33:42 +03:00
describe('Spec Helper', () => {
describe('injectors', () => {
it('should autodetect type if not-specified', () => {
spyOn(console, 'warn').and.stub();
let schema = {
type: undefined,
properties: {}
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema.type.should.be.equal('object');
expect(console.warn).toHaveBeenCalled();
(<jasmine.Spy>console.warn).and.callThrough();
});
describe('string', () => {
it('should calculate range for string with maxLength', () => {
let schema:any = {
type: 'string',
maxLength: 3
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema._range.should.be.equal('<= 3 characters');
});
it('should calculate range for string with minLength', () => {
let schema:any = {
type: 'string',
minLength: 3,
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema._range.should.be.equal('>= 3 characters');
});
it('should calculate range for string with both max and minLength', () => {
let schema:any = {
type: 'string',
minLength: 3,
maxLength: 5
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema._range.should.be.equal('[ 3 .. 5 ] characters');
});
it('should calculate range for string with equal max and minLength', () => {
let schema:any = {
type: 'string',
minLength: 5,
maxLength: 5
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema._range.should.be.equal('5 characters');
});
it('should show range as non-empty for minLength == 1', () => {
let schema:any = {
type: 'string',
minLength: 1
};
SchemaHelper.runInjectors(schema, schema, '#/');
schema._range.should.be.equal('non-empty');
});
});
});
describe('preprocessProperties', () => {
it('should not throw when type array and items are not defined', () => {
let schema = {
type: 'object',
properties: {
prop1: {
type: 'array'
}
}
};
(() => SchemaHelper.preprocessProperties(schema, '#/', {})).should.not.throw();
});
});
2016-07-01 18:33:42 +03:00
});