In the code base there are cases where there is, conceptually, a class that is represented by a combination of an `interface` (type declaration) and a `const` (value declaration). For example: ``` export interface SomeClass { count(a?: string): number; } export const: SomeClass = class { someMethod(a: string = ''): number { ... } }; ``` These were being rendered as interfaces and also not correctly showing the descriptions and default parameter values. In this commit such concepts are now rendered as classes. The classes that are affected by this are: * `DebugElement` * `DebugNode` * `Type` * `EventEmitter` * `TestBed` Note that while decorators are also defined in this form they have their own rendering type (`decorator`) and so are not affecte by this. PR Close #36989
49 lines
2.0 KiB
JavaScript
49 lines
2.0 KiB
JavaScript
const Dgeni = require('dgeni');
|
|
const path = require('canonical-path');
|
|
const testPackage = require('../../helpers/test-package');
|
|
|
|
describe('mergeParameterInfo', () => {
|
|
let injector;
|
|
let tsProcessor;
|
|
let mergeParameterInfoProcessor;
|
|
let parseTagsProcessor;
|
|
let extractTagsProcessor;
|
|
|
|
beforeEach(() => {
|
|
const dgeni = new Dgeni([testPackage('angular-api-package')]);
|
|
injector = dgeni.configureInjector();
|
|
|
|
tsProcessor = injector.get('readTypeScriptModules');
|
|
parseTagsProcessor = injector.get('parseTagsProcessor');
|
|
extractTagsProcessor = injector.get('extractTagsProcessor');
|
|
mergeParameterInfoProcessor = injector.get('mergeParameterInfo');
|
|
tsProcessor.basePath = path.resolve(__dirname, '../mocks');
|
|
tsProcessor.sourceFiles = ['methodParameters.ts'];
|
|
});
|
|
|
|
it('should merge the param tags into the parameter docs', () => {
|
|
const docsArray = [];
|
|
|
|
tsProcessor.$process(docsArray);
|
|
parseTagsProcessor.$process(docsArray);
|
|
extractTagsProcessor.$process(docsArray);
|
|
mergeParameterInfoProcessor.$process(docsArray);
|
|
|
|
const param5 = docsArray.find(doc => doc.name === 'param5' && doc.container.name === 'method2');
|
|
expect(param5.id).toEqual('methodParameters/TestClass.method2()~param5');
|
|
expect(param5.description).toEqual('description of param5');
|
|
expect(param5.type).toEqual('string');
|
|
|
|
const param6 = docsArray.find(doc => doc.name === 'param6' && doc.container.name === 'method2');
|
|
expect(param6.id).toEqual('methodParameters/TestClass.method2()~param6');
|
|
expect(param6.description).toEqual('description of param6');
|
|
expect(param6.type).toEqual('number');
|
|
|
|
const param7 = docsArray.find(doc => doc.name === 'param7' && doc.container.name === 'method2');
|
|
expect(param7.id).toEqual('methodParameters/TestClass.method2()~param7');
|
|
expect(param7.description).toEqual('description of param7');
|
|
expect(param7.type).toEqual('number');
|
|
expect(param7.defaultValue).toEqual('42');
|
|
});
|
|
});
|