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