Skip to content

Commit

Permalink
fix: duplication of title (#2119)
Browse files Browse the repository at this point in the history
Co-authored-by: Mateusz Romański <m.romanski@webspire.pl>
  • Loading branch information
MrNuky and Mateusz Romański authored Aug 9, 2022
1 parent 0b1a790 commit 40ebfd2
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/services/MarkdownRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export class MarkdownRenderer {
parentId?: string,
): MarkdownHeading {
name = unescapeHTMLChars(name);
const item = {
const item: MarkdownHeading = {
id: parentId ? `${parentId}/${safeSlugify(name)}` : `section/${safeSlugify(name)}`,
name,
level,
Expand All @@ -87,7 +87,7 @@ export class MarkdownRenderer {
attachHeadingsDescriptions(rawText: string) {
const buildRegexp = (heading: MarkdownHeading) => {
return new RegExp(
`##?\\s+${heading.name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}\s*(\n|\r\n)`,
`##?\\s+${heading.name.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}\s*(\n|\r\n|$|\s*)`,
);
};

Expand Down
18 changes: 18 additions & 0 deletions src/services/__tests__/MarkdownRenderer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,22 @@ describe('Markdown renderer', () => {
expect(part.component).toBe(TestComponent);
expect(part.props).toEqual({ children: ' Test Test ' });
});

test('should properly extract title from text', () => {
const rawTexts = ['text before\n# Test', 'text before\n # Test', 'text before\n# Test\n'];
rawTexts.forEach(text => {
const headings = renderer.extractHeadings(text);
expect(headings).toHaveLength(1);
expect(headings[0].name).toEqual('Test');
expect(headings[0].description).toEqual('');
});

const rawTexts2 = ['# Test \n text after', '# Test \ntext after'];
rawTexts2.forEach(text => {
const headings = renderer.extractHeadings(text);
expect(headings).toHaveLength(1);
expect(headings[0].name).toEqual('Test');
expect(headings[0].description).toEqual('text after');
});
});
});
24 changes: 24 additions & 0 deletions src/services/__tests__/models/ApiInfo.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,30 @@ describe('Models', () => {
expect(info.summary).toEqual('Test summary\nsome text\n## Heading\n test');
});

test('should correctly populate description when 2nd line is started by white space', () => {
parser.spec = {
openapi: '3.0.0',
info: {
description: 'text before\n # Test',
},
} as any;

const info = new ApiInfoModel(parser);
expect(info.description).toEqual('text before\n');
});

test('should correctly populate description when 2nd line is only white space', () => {
parser.spec = {
openapi: '3.0.0',
info: {
description: 'text before\n \n # Test',
},
} as any;

const info = new ApiInfoModel(parser);
expect(info.description).toEqual('text before\n');
});

test('should correctly populate license identifier', () => {
parser.spec = {
openapi: '3.1.0',
Expand Down
2 changes: 1 addition & 1 deletion src/services/models/ApiInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class ApiInfoModel implements OpenAPIInfo {
this.description = parser.spec.info.description || '';
this.summary = parser.spec.info.summary || '';

const firstHeadingLinePos = this.description.search(/^##?\s+/m);
const firstHeadingLinePos = this.description.search(/^\s*##?\s+/m);
if (firstHeadingLinePos > -1) {
this.description = this.description.substring(0, firstHeadingLinePos);
}
Expand Down

0 comments on commit 40ebfd2

Please sign in to comment.