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