build(aio): add API static members to search index (#21988)
Previously searching for `compose` did not include `Validators` in the search results because we were not including all the `static` members of API docs in the index. PR Close #21988
This commit is contained in:
parent
ae7bc2238d
commit
9a0700f5bd
|
@ -0,0 +1,28 @@
|
||||||
|
import { SitePage } from './app.po';
|
||||||
|
|
||||||
|
describe('site search', () => {
|
||||||
|
let page;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
page = new SitePage();
|
||||||
|
page.navigateTo('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should find pages when searching by a partial word in the title', () => {
|
||||||
|
page.enterSearch('ngCont');
|
||||||
|
expect(page.getSearchResults()).toContain('NgControl');
|
||||||
|
|
||||||
|
page.enterSearch('accessor');
|
||||||
|
expect(page.getSearchResults()).toContain('ControlValueAccessor');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should find API docs whose instance member name matches the search query', () => {
|
||||||
|
page.enterSearch('decode');
|
||||||
|
expect(page.getSearchResults()).toContain('HttpParameterCodec');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should find API docs whose static method name matches the search query', () => {
|
||||||
|
page.enterSearch('compose');
|
||||||
|
expect(page.getSearchResults()).toContain('Validators');
|
||||||
|
});
|
||||||
|
});
|
|
@ -115,18 +115,6 @@ describe('site App', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('search', () => {
|
|
||||||
it('should find pages when searching by a partial word in the title', () => {
|
|
||||||
page.navigateTo('');
|
|
||||||
|
|
||||||
page.enterSearch('ngCont');
|
|
||||||
expect(page.getSearchResults()).toContain('NgControl');
|
|
||||||
|
|
||||||
page.enterSearch('accessor');
|
|
||||||
expect(page.getSearchResults()).toContain('ControlValueAccessor');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('404 page', () => {
|
describe('404 page', () => {
|
||||||
it('should add or remove the "noindex" meta tag depending upon the validity of the page', () => {
|
it('should add or remove the "noindex" meta tag depending upon the validity of the page', () => {
|
||||||
page.navigateTo('');
|
page.navigateTo('');
|
||||||
|
|
|
@ -97,7 +97,7 @@ module.exports = function generateKeywordsProcessor(log, readFilesProcessor) {
|
||||||
|
|
||||||
// Special case properties that contain content relating to "members"
|
// Special case properties that contain content relating to "members"
|
||||||
// of a doc that represents, say, a class or interface
|
// of a doc that represents, say, a class or interface
|
||||||
if (key === 'methods' || key === 'properties' || key === 'events') {
|
if (key === 'members' || key === 'statics') {
|
||||||
value.forEach(function(member) { extractWords(member.name, members, membersMap); });
|
value.forEach(function(member) { extractWords(member.name, members, membersMap); });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -98,6 +98,36 @@ describe('generateKeywords processor', () => {
|
||||||
expect(keywordsDoc.data[0].headingWords).toEqual('heading important secondary');
|
expect(keywordsDoc.data[0].headingWords).toEqual('heading important secondary');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should add member doc properties to the search terms', () => {
|
||||||
|
const processor = processorFactory(mockLogger, mockReadFilesProcessor);
|
||||||
|
const docs = [
|
||||||
|
{
|
||||||
|
docType: 'class',
|
||||||
|
name: 'PublicExport',
|
||||||
|
searchTitle: 'class PublicExport',
|
||||||
|
vFile: { headings: { h2: ['heading A'] } },
|
||||||
|
content: 'Some content with ngClass in it.',
|
||||||
|
members: [
|
||||||
|
{ name: 'instanceMethodA' },
|
||||||
|
{ name: 'instancePropertyA' },
|
||||||
|
{ name: 'instanceMethodB' },
|
||||||
|
{ name: 'instancePropertyB' },
|
||||||
|
],
|
||||||
|
statics: [
|
||||||
|
{ name: 'staticMethodA' },
|
||||||
|
{ name: 'staticPropertyA' },
|
||||||
|
{ name: 'staticMethodB' },
|
||||||
|
{ name: 'staticPropertyB' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
processor.$process(docs);
|
||||||
|
const keywordsDoc = docs[docs.length - 1];
|
||||||
|
expect(keywordsDoc.data[0].members).toEqual(
|
||||||
|
'instancemethoda instancemethodb instancepropertya instancepropertyb staticmethoda staticmethodb staticpropertya staticpropertyb'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('should process terms prefixed with "ng" to include the term stripped of "ng"', () => {
|
it('should process terms prefixed with "ng" to include the term stripped of "ng"', () => {
|
||||||
const processor = processorFactory(mockLogger, mockReadFilesProcessor);
|
const processor = processorFactory(mockLogger, mockReadFilesProcessor);
|
||||||
const docs = [
|
const docs = [
|
||||||
|
|
Loading…
Reference in New Issue