build(aio): `doc.searchTitle` can override name in search results

This commit is contained in:
Peter Bacon Darwin 2017-05-03 21:44:30 +01:00 committed by Pete Bacon Darwin
parent 895f47a9c2
commit 978376a46e
5 changed files with 81 additions and 1 deletions

View File

@ -23,6 +23,7 @@ module.exports = new Package('angular-api', [basePackage, typeScriptPackage])
.processor(require('./processors/filterMemberDocs'))
.processor(require('./processors/markBarredODocsAsPrivate'))
.processor(require('./processors/filterPrivateDocs'))
.processor(require('./processors/computeSearchTitle'))
// Where do we get the source files?
.config(function(readTypeScriptModules, readFilesProcessor, collectExamples) {

View File

@ -0,0 +1,9 @@
module.exports = function computeSearchTitleProcessor() {
return {
$runAfter: ['ids-computed'],
$runBefore: ['generateKeywordsProcessor'],
$process(docs) {
}
};
};

View File

@ -0,0 +1,59 @@
const testPackage = require('../../helpers/test-package');
const processorFactory = require('./computeSearchTitle');
const Dgeni = require('dgeni');
fdescribe('computeSearchTitle processor', () => {
it('should be available on the injector', () => {
const dgeni = new Dgeni([testPackage('angular-api-package')]);
const injector = dgeni.configureInjector();
const processor = injector.get('computeSearchTitleProcessor');
expect(processor.$process).toBeDefined();
});
it('should run after the correct processor', () => {
const processor = processorFactory();
expect(processor.$runAfter).toEqual(['ids-computed']);
});
it('should run before the correct processor', () => {
const processor = processorFactory();
expect(processor.$runBefore).toEqual(['generateKeywordsProcessor']);
});
it('should compute a search title for class-like docs', () => {
const processor = processorFactory();
const docs = [
{ docType: 'class', name: 'MyClass' },
{ docType: 'interface', name: 'MyInterface' },
{ docType: 'pipe', name: 'MyPipe', pipeOptions: { name: 'myPipe' } }
];
processor.$process(docs);
expect(docs[0].searchTitle).toEqual('class MyClass');
expect(docs[0].searchTitle).toEqual('interface MyInterface');
expect(docs[0].searchTitle).toEqual('myPipe (pipe)');
});
it('should compute a class search title', () => {
const processor = processorFactory();
const docs = [
{ docType: 'class', name: 'MyClass' }
];
processor.$process(docs);
expect(docs[0].searchTitle).toEqual('class MyClass');
});
});
// 'decorator',
// 'directive',
// 'module'
// 'function',
// 'var',
// 'const',
// 'let',
// 'enum',
// 'type-alias',
// 'value-module'

View File

@ -115,7 +115,7 @@ module.exports = function generateKeywordsProcessor(log, readFilesProcessor) {
var searchData =
filteredDocs.filter(function(page) { return page.searchTerms; }).map(function(page) {
return Object.assign(
{path: page.path, title: page.name || page.title, type: page.docType}, page.searchTerms);
{path: page.path, title: page.searchTitle || page.name || page.title, type: page.docType}, page.searchTerms);
});
docs.push({

View File

@ -38,4 +38,15 @@ describe('generateKeywords processor', () => {
jasmine.objectContaining({ title: 'PublicExport', type: 'class'})
]);
});
it('should use `doc.searchTitle` as the title if available', () => {
const processor = processorFactory(mockLogger, mockReadFilesProcessor);
const docs = [
{ docType: 'class', name: 'PublicExport', searchTitle: 'class PublicExport' },
];
processor.$process(docs);
expect(docs[docs.length - 1].data).toEqual([
jasmine.objectContaining({ title: 'class PublicExport', type: 'class'})
]);
});
});