| 
									
										
										
										
											2018-02-08 15:00:53 +00:00
										 |  |  | const testPackage = require('../../helpers/test-package'); | 
					
						
							|  |  |  | const processorFactory = require('./processClassLikeMembers'); | 
					
						
							|  |  |  | const Dgeni = require('dgeni'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const property1 = { description: 'property 1' }; | 
					
						
							|  |  |  | const property2 = { description: 'property 2' }; | 
					
						
							|  |  |  | const getter1 = { parameters: [], isGetAccessor: true, description: 'getter 1' }; | 
					
						
							|  |  |  | const setter1 = { parameters: [], isSetAccessor: true, description: 'setter 1' }; | 
					
						
							|  |  |  | const method1 = { parameters: [] }; | 
					
						
							|  |  |  | const method2 = { parameters: [] }; | 
					
						
							|  |  |  | const method3 = { parameters: [] }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-10 17:14:58 +00:00
										 |  |  | describe('angular-api-package: processClassLikeMembers processor', () => { | 
					
						
							| 
									
										
										
										
											2018-02-08 15:00:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   it('should be available on the injector', () => { | 
					
						
							|  |  |  |     const dgeni = new Dgeni([testPackage('angular-api-package')]); | 
					
						
							|  |  |  |     const injector = dgeni.configureInjector(); | 
					
						
							|  |  |  |     const processor = injector.get('processClassLikeMembers'); | 
					
						
							|  |  |  |     expect(processor.$process).toBeDefined(); | 
					
						
							|  |  |  |     expect(processor.$runAfter).toEqual(['filterContainedDocs']); | 
					
						
							|  |  |  |     expect(processor.$runBefore).toEqual(['rendering-docs']); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should copy instance members into properties and methods', () => { | 
					
						
							|  |  |  |     const processor = processorFactory(); | 
					
						
							|  |  |  |     const docs = [ | 
					
						
							|  |  |  |       { members: [ property1, method1, getter1] }, | 
					
						
							|  |  |  |       { members: [ method2, property2, method3, setter1] }, | 
					
						
							|  |  |  |       { } | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[0].properties).toEqual([property1, getter1]); | 
					
						
							|  |  |  |     expect(docs[0].methods).toEqual([method1]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[1].properties).toEqual([property2, setter1]); | 
					
						
							|  |  |  |     expect(docs[1].methods).toEqual([method2, method3]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[2].properties).toBeUndefined(); | 
					
						
							|  |  |  |     expect(docs[2].methods).toBeUndefined(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should copy static members into properties and methods', () => { | 
					
						
							|  |  |  |     const processor = processorFactory(); | 
					
						
							|  |  |  |     const docs = [ | 
					
						
							|  |  |  |       { statics: [ property1, method1, getter1] }, | 
					
						
							|  |  |  |       { statics: [ method2, property2, method3, setter1] }, | 
					
						
							|  |  |  |       { } | 
					
						
							|  |  |  |     ]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[0].staticProperties).toEqual([property1, getter1]); | 
					
						
							|  |  |  |     expect(docs[0].staticMethods).toEqual([method1]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[1].staticProperties).toEqual([property2, setter1]); | 
					
						
							|  |  |  |     expect(docs[1].staticMethods).toEqual([method2, method3]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(docs[2].staticProperties).toBeUndefined(); | 
					
						
							|  |  |  |     expect(docs[2].staticMethods).toBeUndefined(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('should wire up properties that are declared as parameters on the constructor to its associated parameter doc', () => { | 
					
						
							|  |  |  |     const processor = processorFactory(); | 
					
						
							|  |  |  |     const propertyDeclaration = {}; | 
					
						
							|  |  |  |     const parameterDoc1 = { declaration: {} }; | 
					
						
							|  |  |  |     const parameterDoc2 = { declaration: propertyDeclaration }; | 
					
						
							|  |  |  |     const parameterDoc3 = { declaration: {} }; | 
					
						
							|  |  |  |     const property = { | 
					
						
							|  |  |  |       declaration: propertyDeclaration, | 
					
						
							|  |  |  |       containerDoc: { | 
					
						
							|  |  |  |         constructorDoc: { | 
					
						
							|  |  |  |           parameterDocs: [ parameterDoc1, parameterDoc2, parameterDoc3 ] | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     const docs = [{ members: [ property] }]; | 
					
						
							|  |  |  |     processor.$process(docs); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(property.constructorParamDoc).toEqual(parameterDoc2); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |