82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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: [] };
 | 
						|
 | 
						|
describe('angular-api-package: processClassLikeMembers processor', () => {
 | 
						|
 | 
						|
  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);
 | 
						|
  });
 | 
						|
});
 |