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.
		
		
		
		
		
			
		
			
				
					84 lines
				
				4.2 KiB
			
		
		
			
		
	
	
					84 lines
				
				4.2 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | var __importDefault = (this && this.__importDefault) || function (mod) { | ||
|  |     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
|  | }; | ||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||
|  | const models_1 = require("./utils/models"); | ||
|  | const property_1 = __importDefault(require("../src/property")); | ||
|  | describe('Property', () => { | ||
|  |     describe('#availableValues', () => { | ||
|  |         it('returns null for all standard (Non enum) values', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.availableValues()).toEqual(null); | ||
|  |         }); | ||
|  |         it('returns array of values for the enum field', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.genre); | ||
|  |             expect(property.availableValues()).toEqual(['male', 'female']); | ||
|  |         }); | ||
|  |     }); | ||
|  |     describe('#isArray', () => { | ||
|  |         it('returns false for regular (not arrayed) property', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.isArray()).toEqual(false); | ||
|  |         }); | ||
|  |         it('returns true for array property', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.arrayed); | ||
|  |             expect(property.isArray()).toEqual(true); | ||
|  |         }); | ||
|  |     }); | ||
|  |     describe('#type', () => { | ||
|  |         it('returns string type for string property', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.type()).toEqual('string'); | ||
|  |         }); | ||
|  |         it('returns string when property is an array of strings', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.arrayed); | ||
|  |             expect(property.type()).toEqual('string'); | ||
|  |         }); | ||
|  |         it('returns mixed when prooperty is an array of embeded schemas', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.family); | ||
|  |             expect(property.type()).toEqual('mixed'); | ||
|  |         }); | ||
|  |     }); | ||
|  |     describe('#reference', () => { | ||
|  |         it('returns undefined when property without a reference is given', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.reference()).toEqual(undefined); | ||
|  |         }); | ||
|  |         it('returns reference to User when field with it is given', () => { | ||
|  |             const property = new property_1.default(models_1.Article.schema.paths.createdBy); | ||
|  |             expect(property.reference()).toEqual('User'); | ||
|  |         }); | ||
|  |         it('returns reference to User when field is an array fields with references', () => { | ||
|  |             const property = new property_1.default(models_1.Article.schema.paths.owners); | ||
|  |             expect(property.reference()).toEqual('User'); | ||
|  |         }); | ||
|  |     }); | ||
|  |     describe('#subProperties', () => { | ||
|  |         it('returns empty array for regular (not mixed) property', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.subProperties()).toEqual([]); | ||
|  |         }); | ||
|  |         it('returns an array of all subproperties when nested schema is given', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.parent); | ||
|  |             const subProperties = property.subProperties(); | ||
|  |             expect(subProperties.length).toEqual(6); | ||
|  |         }); | ||
|  |         it('returns an array of all subproperties when array of nested schema is given', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.family); | ||
|  |             const subProperties = property.subProperties(); | ||
|  |             expect(subProperties.length).toEqual(6); | ||
|  |         }); | ||
|  |     }); | ||
|  |     describe('#isRequired', () => { | ||
|  |         it('returns true for required property', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.email); | ||
|  |             expect(property.isRequired()).toEqual(true); | ||
|  |         }); | ||
|  |         it('returns string when property is an array of strings', () => { | ||
|  |             const property = new property_1.default(models_1.User.schema.paths.genre); | ||
|  |             expect(property.isRequired()).toEqual(false); | ||
|  |         }); | ||
|  |     }); | ||
|  | }); | ||
|  | //# sourceMappingURL=property.spec.js.map
 |