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.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							2.5 KiB
						
					
					
				| import sinon from 'sinon'
 | |
| 
 | |
| import BaseProperty from '../../../src/backend/adapters/property/base-property'
 | |
| import BaseResource from '../../../src/backend/adapters/resource/base-resource'
 | |
| import ResourceDecorator from '../../../src/backend/decorators/resource/resource-decorator'
 | |
| 
 | |
| /**
 | |
|  * returns properties with following absolute paths:
 | |
|  * - normal: number
 | |
|  * - nested: mixed
 | |
|  * - nested.normal: string
 | |
|  * - nested.nested: mixed
 | |
|  * - nested.nested.normalInner: string
 | |
|  * - arrayed: string (array)
 | |
|  * - arrayedMixed: mixed (array)
 | |
|  * - arrayedMixed.arrayParam: string
 | |
|  *
 | |
|  * @private
 | |
|  */
 | |
| const buildProperties = (): Array<BaseProperty> => {
 | |
|   const normalProperty = new BaseProperty({ path: 'normal', type: 'number' }) as any
 | |
|   const nestedProperty = new BaseProperty({ path: 'nested', type: 'mixed' }) as any
 | |
|   const nested2Property = new BaseProperty({ path: 'nested', type: 'mixed' }) as any
 | |
|   const arrayProperty = new BaseProperty({ path: 'arrayed', type: 'string' }) as any
 | |
|   const arrayMixedProperty = new BaseProperty({ path: 'arrayedMixed', type: 'mixed' }) as any
 | |
|   arrayProperty.isArray = (): boolean => true
 | |
|   arrayMixedProperty.isArray = (): boolean => true
 | |
| 
 | |
|   nestedProperty.subProperties = (): Array<BaseProperty> => [
 | |
|     new BaseProperty({ path: 'normal', type: 'string' }),
 | |
|     nested2Property,
 | |
|   ]
 | |
|   nested2Property.subProperties = (): Array<BaseProperty> => [
 | |
|     new BaseProperty({ path: 'normalInner', type: 'string' }),
 | |
|   ]
 | |
|   arrayMixedProperty.subProperties = (): Array<BaseProperty> => [
 | |
|     new BaseProperty({ path: 'arrayParam', type: 'string' }),
 | |
|   ]
 | |
| 
 | |
|   return [normalProperty, nestedProperty, arrayProperty, arrayMixedProperty]
 | |
| }
 | |
| 
 | |
| export const expectedResult = {
 | |
|   id: 'someID',
 | |
|   properties: buildProperties(),
 | |
|   resourceName: 'resourceName',
 | |
|   databaseName: 'databaseName',
 | |
|   databaseType: 'mongodb',
 | |
|   parent: {
 | |
|     name: 'databaseName',
 | |
|     icon: 'icon-mongodb',
 | |
|   },
 | |
| }
 | |
| 
 | |
| export default (): BaseResource => ({
 | |
|   _decorated: {} as ResourceDecorator,
 | |
|   id: sinon.stub().returns(expectedResult.id),
 | |
|   properties: sinon.stub().returns(expectedResult.properties),
 | |
|   property: sinon.stub().returns(new BaseProperty({ path: 'prop', type: 'string' })),
 | |
|   databaseName: sinon.stub().returns(expectedResult.databaseName),
 | |
|   databaseType: sinon.stub().returns(expectedResult.databaseType),
 | |
|   count: sinon.stub(),
 | |
|   find: sinon.stub(),
 | |
|   findOne: sinon.stub(),
 | |
|   findMany: sinon.stub(),
 | |
|   build: sinon.stub(),
 | |
|   create: sinon.stub(),
 | |
|   update: sinon.stub(),
 | |
|   delete: sinon.stub(),
 | |
|   assignDecorator: sinon.stub(),
 | |
|   decorate: sinon.stub(),
 | |
| })
 |