Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ exports[`searchPatternFlyDocsTool should have a consistent return structure: str
}
`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, default: search 1`] = `"# Search results for "Button". Showing 1 exact match."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, default: search 1`] = `"# Search results for "Button". Showing 2 exact matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with "*" searchQuery all: search 1`] = `"# Search results for "all" resources. Only showing the first 10 results. There are 546 potential match variations. Try searching with a more specific query."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with "*" searchQuery all: search 1`] = `"# Search results for "all" resources. Only showing the first 10 results. There are 732 potential match variations. Try searching with a more specific query."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with "all" searchQuery all: search 1`] = `"# Search results for "all" resources. Only showing the first 10 results. There are 546 potential match variations. Try searching with a more specific query."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with "all" searchQuery all: search 1`] = `"# Search results for "all" resources. Only showing the first 10 results. There are 732 potential match variations. Try searching with a more specific query."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with explicit valid version: search 1`] = `"# Search results for "Button". Showing 1 exact match."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with explicit valid version: search 1`] = `"# Search results for "Button". Showing 2 exact matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with lower case componentName: search 1`] = `"# Search results for "button". Showing 1 exact match."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with lower case componentName: search 1`] = `"# Search results for "button". Showing 2 exact matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with made up componentName: search 1`] = `"No PatternFly resources found matching "lorem ipsum dolor sit amet""`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with multiple words: search 1`] = `"# Search results for "Button Card Table". Showing 3 related matches."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with multiple words: search 1`] = `"# Search results for "Button Card Table". Showing 4 related matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with partial componentName: search 1`] = `"# Search results for "ton". Showing 4 related matches."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with partial componentName: search 1`] = `"# Search results for "ton". Showing 5 related matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with trimmed componentName: search 1`] = `"# Search results for " Button ". Showing 1 exact match."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with trimmed componentName: search 1`] = `"# Search results for " Button ". Showing 2 exact matches."`;

exports[`searchPatternFlyDocsTool, callback should parse parameters, with upper case componentName: search 1`] = `"# Search results for "BUTTON". Showing 1 exact match."`;
exports[`searchPatternFlyDocsTool, callback should parse parameters, with upper case componentName: search 1`] = `"# Search results for "BUTTON". Showing 2 exact matches."`;
47 changes: 38 additions & 9 deletions src/__tests__/docs.json.test.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,49 @@
import docs from '../docs.json';

describe('docs.json', () => {
it('should have metadata reflective of its JSON content', () => {
expect(docs.meta.totalEntries).toBeDefined();
expect(Object.entries(docs.docs).length).toBe(docs.meta.totalEntries);

expect(docs.meta.totalDocs).toBeDefined();

it('should have metadata reflective of its content and unique links per each entry', () => {
const allLinks = new Set<string>();
const baseHashes = new Set<string | undefined>();
const flatDocs = Object.values(docs.docs).flat();
let totalDocs = 0;

Object.values(docs.docs).forEach(entries => {
if (Array.isArray(entries)) {
totalDocs += entries.length;
flatDocs.forEach(entry => {
totalDocs += 1;
allLinks.add(entry.path);

if (entry.path.includes('documentation:')) {
baseHashes.add('documentation:');
} else if (entry.path.includes('/patternfly/patternfly-org/')) {
baseHashes.add(entry.path.split('/patternfly/patternfly-org/')[1]?.split('/')[0]);
} else if (entry.path.includes('/patternfly/patternfly-react/')) {
baseHashes.add(entry.path.split('/patternfly/patternfly-react/')[1]?.split('/')[0]);
} else {
baseHashes.add(`new-resource-${entry.path}`);
}
});

expect(docs.meta.totalEntries).toBeDefined();
expect(docs.meta.totalDocs).toBeDefined();
expect(Object.entries(docs.docs).length).toBe(docs.meta.totalEntries);

/**
* Confirm we have limited hashes, avoid variation within pf versions
* If this increases, hashes need to be realigned. Do not randomly change this value.
* 1 (v6 org) + 1 (v6 react) + 1 (v5 org) + 1 (local)
*/
expect(baseHashes.size).toBe(4);

/**
* Confirm total docs count matches metadata
* Update the JSON metadata accordingly
*/
expect(totalDocs).toBe(docs.meta.totalDocs);

/**
* Confirm unique links against metadata totals
* Update the JSON metadata accordingly
*/
expect(allLinks.size).toBe(flatDocs.length);
expect(allLinks.size).toBe(docs.meta.totalDocs);
});
});
Loading
Loading