UNPKG

mongoose-schema-parser

Version:
238 lines (174 loc) 5.02 kB
const test = require('ava') const { Schema } = require('mongoose') const { resolve } = require('path') const schemaHelper = require(resolve('./lib/schema')) const { Types } = Schema test('get property type String', t => { const SampleSchema = new Schema({ property: { type: String } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'String') }) test('get property type Number', t => { const SampleSchema = new Schema({ property: { type: Number } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Number') }) test('get property type Decimal128', t => { const SampleSchema = new Schema({ property: { type: Types.Decimal128 } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Decimal128') }) test('get property type Boolean', t => { const SampleSchema = new Schema({ property: { type: Boolean } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Boolean') }) test('get property type Mixed', t => { const SampleSchema = new Schema({ property: { type: Types.Mixed } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Mixed') }) test('get property type ObjectId', t => { const SampleSchema = new Schema({ property: { type: Types.ObjectId } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ObjectId') }) test('get property type Date', t => { const SampleSchema = new Schema({ property: { type: Date } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Date') }) test('get property type Buffer', t => { const SampleSchema = new Schema({ property: { type: Buffer } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Buffer') }) test('get property type Map', t => { const SampleSchema = new Schema({ property: { type: Map } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Map') }) test('get property type Array', t => { const SampleSchema = new Schema({ property: { type: Array } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Array') }) test('get property type Array (defined as empty array)', t => { const SampleSchema = new Schema({ property: [] }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Array') }) test('get property type ArrayOfString', t => { const SampleSchema = new Schema({ property: [String] }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ArrayOfString') }) test('get property type ArrayOfNumber', t => { const SampleSchema = new Schema({ property: [Number] }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ArrayOfNumber') }) test('get property type ArrayOfObjectId', t => { const SampleSchema = new Schema({ property: [Types.ObjectId] }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ArrayOfObjectId') }) test('get property type Object', t => { const SampleSchema = new Schema({ property: {} }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Object') }) test('get property type Schema', t => { const childSchema = new Schema({ childProperty: 'string' }) const SampleSchema = new Schema({ property: childSchema }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Schema') }) test('get property type Schema, defined as type', t => { const childSchema = new Schema({ childProperty: 'string' }) const SampleSchema = new Schema({ property: { type: childSchema } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'Schema') }) test('get property type ArrayOfSchema', t => { const childSchema = new Schema({ childProperty: 'string' }) const SampleSchema = new Schema({ property: [childSchema] }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ArrayOfSchema') }) test('get property type ArrayOfSchema defined as type', t => { const childSchema = new Schema({ childProperty: 'string' }) const SampleSchema = new Schema({ property: { type: [childSchema] } }) const propertyType = schemaHelper.getPropertyType(SampleSchema.obj.property) t.is(propertyType, 'ArrayOfSchema') })