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.

43 lines
1.1 KiB

3 years ago
import mongoose from 'mongoose'
import Resource from '../../src/resource'
import { User } from '../utils/models'
import Property from '../../src/property'
describe('Resource #properties', () => {
let resource
let returnedProperties
beforeEach(() => {
resource = new Resource(User)
returnedProperties = resource.properties()
})
it('returns correct amount of properties', () => {
// 8 because of implicit _id and __v properties
expect(returnedProperties.length).toEqual(8)
})
it('sets the position of properties', () => {
expect(returnedProperties.map(p => p.position())).toEqual([0, 1, 2, 3, 4, 5, 6, 7])
})
it('returns instances of Property class', async () => {
expect(returnedProperties[0]).toBeInstanceOf(Property)
})
it('returns all fields for nested properties', () => {
const Nested = mongoose.model('Nested', new mongoose.Schema({
field: {
subfield: String,
anotherSubField: String,
},
}))
const nestedResource = new Resource(Nested)
const propertiesOfNestedResource = nestedResource.properties()
expect(propertiesOfNestedResource.length).toEqual(4)
})
})