98 lines
4.0 KiB
JavaScript
98 lines
4.0 KiB
JavaScript
const testPackage = require('../../helpers/test-package');
|
|
const processorFactory = require('./processPseudoClasses');
|
|
const Dgeni = require('dgeni');
|
|
|
|
describe('processPseudoClasses processor', () => {
|
|
it('should be available on the injector', () => {
|
|
const dgeni = new Dgeni([testPackage('angular-api-package')]);
|
|
const injector = dgeni.configureInjector();
|
|
const processor = injector.get('processPseudoClasses');
|
|
expect(processor.$process).toBeDefined();
|
|
expect(processor.$runAfter).toEqual(['readTypeScriptModules']);
|
|
expect(processor.$runBefore).toEqual(['parsing-tags']);
|
|
});
|
|
|
|
it('should convert "interface+const" docs to "class" docs', () => {
|
|
const processor = processorFactory(jasmine.createSpyObj(['getContent']));
|
|
const docs = [
|
|
{docType: 'module', id: 'a'},
|
|
{docType: 'class', id: 'b'},
|
|
{docType: 'interface', id: 'c'},
|
|
{docType: 'interface', id: 'd', additionalDeclarations: []},
|
|
{docType: 'interface', id: 'e', additionalDeclarations: [{}]},
|
|
{docType: 'const', id: 'f'},
|
|
{docType: 'const', id: 'g', additionalDeclarations: []},
|
|
{docType: 'const', id: 'h', additionalDeclarations: [{}]},
|
|
];
|
|
processor.$process(docs);
|
|
expect(docs).toEqual([
|
|
jasmine.objectContaining({docType: 'module', id: 'a'}),
|
|
jasmine.objectContaining({docType: 'class', id: 'b'}),
|
|
jasmine.objectContaining({docType: 'interface', id: 'c'}),
|
|
jasmine.objectContaining({docType: 'interface', id: 'd'}),
|
|
|
|
// This is the only one that changes
|
|
jasmine.objectContaining({docType: 'class', id: 'e'}),
|
|
|
|
jasmine.objectContaining({docType: 'const', id: 'f'}),
|
|
jasmine.objectContaining({docType: 'const', id: 'g'}),
|
|
jasmine.objectContaining({docType: 'const', id: 'h'}),
|
|
]);
|
|
});
|
|
|
|
it('should grab the content from the first additional declaration if there is no "real" content already',
|
|
() => {
|
|
const getContent = jasmine.createSpy('getContent').and.returnValue('additional content');
|
|
const additionalDeclaration1 = {};
|
|
const additionalDeclaration2 = {};
|
|
const additionalDeclaration3 = {};
|
|
const processor = processorFactory({getContent});
|
|
const docs = [
|
|
{
|
|
docType: 'interface',
|
|
id: 'a',
|
|
content: 'original content',
|
|
additionalDeclarations: [additionalDeclaration1]
|
|
},
|
|
{
|
|
docType: 'interface',
|
|
id: 'b',
|
|
content: '@publicApi', // this does not count as "real" content
|
|
additionalDeclarations: [additionalDeclaration2]
|
|
},
|
|
{docType: 'interface', id: 'c', additionalDeclarations: [additionalDeclaration3]},
|
|
];
|
|
processor.$process(docs);
|
|
expect(docs[0].content).toEqual('original content');
|
|
expect(docs[1].content).toEqual('additional content');
|
|
expect(docs[2].content).toEqual('additional content');
|
|
expect(getContent).toHaveBeenCalledWith(additionalDeclaration1);
|
|
expect(getContent).toHaveBeenCalledWith(additionalDeclaration2);
|
|
expect(getContent).toHaveBeenCalledWith(additionalDeclaration3);
|
|
});
|
|
|
|
it('should extract any __new member from the interface members', () => {
|
|
const getContent = jasmine.createSpy('getContent').and.returnValue('additional content');
|
|
const processor = processorFactory({getContent});
|
|
const docs = [
|
|
{docType: 'interface', id: 'a', additionalDeclarations: [{}]},
|
|
{docType: 'interface', id: 'b', additionalDeclarations: [{}], members: []},
|
|
{docType: 'interface', id: 'c', additionalDeclarations: [{}], members: [{name: 'member1'}]},
|
|
{
|
|
docType: 'interface',
|
|
id: 'd',
|
|
additionalDeclarations: [{}],
|
|
members: [{name: 'member1', isNewMember: true}]
|
|
},
|
|
];
|
|
processor.$process(docs);
|
|
|
|
expect(docs[0].members).toEqual(undefined);
|
|
expect(docs[1].members).toEqual([]);
|
|
expect(docs[2].members).toEqual([{name: 'member1'}]);
|
|
|
|
expect(docs[3].members).toEqual([]);
|
|
expect(docs[3].constructorDoc).toEqual({name: 'constructor', isNewMember: true});
|
|
});
|
|
});
|