tests: import entire markdoc libary as single object to make mocking easier using jest
This commit is contained in:
+59
-22
@@ -2,12 +2,7 @@ import Clients from '@/app/components/Clients';
|
|||||||
import CodeSnippet from '@/app/components/CodeSnippet';
|
import CodeSnippet from '@/app/components/CodeSnippet';
|
||||||
import Fence from '@/app/components/Fence';
|
import Fence from '@/app/components/Fence';
|
||||||
import { DOCS_PATH } from '@/app/constants';
|
import { DOCS_PATH } from '@/app/constants';
|
||||||
import {
|
import * as MarkdocLibrary from '@/app/lib/markdoc';
|
||||||
getCopyPath,
|
|
||||||
getExamplePath,
|
|
||||||
markDocConfig,
|
|
||||||
parseMarkdown,
|
|
||||||
} from '@/app/lib/markdoc';
|
|
||||||
import { Doc } from '@/app/types/types';
|
import { Doc } from '@/app/types/types';
|
||||||
import { default as Markdoc } from '@markdoc/markdoc';
|
import { default as Markdoc } from '@markdoc/markdoc';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
@@ -32,13 +27,21 @@ describe('Markdoc lib functions', () => {
|
|||||||
folder: 'folder',
|
folder: 'folder',
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = getCopyPath(version, doc, docPath);
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
|
version,
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
expect(result).toEqual('');
|
expect(result).toEqual('');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct copy path', () => {
|
it('returns correct copy path', () => {
|
||||||
const result = getCopyPath(version, doc, docPath);
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
|
version,
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
const expected = path.join(
|
const expected = path.join(
|
||||||
DOCS_PATH,
|
DOCS_PATH,
|
||||||
@@ -51,7 +54,7 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct copy path with leading/trailing slashes in docPath', () => {
|
it('returns correct copy path with leading/trailing slashes in docPath', () => {
|
||||||
const result = getCopyPath(
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
version,
|
version,
|
||||||
doc,
|
doc,
|
||||||
'/path/to/doc/'
|
'/path/to/doc/'
|
||||||
@@ -68,7 +71,11 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct copy path with different version', () => {
|
it('returns correct copy path with different version', () => {
|
||||||
const result = getCopyPath('v2.0.0', doc, docPath);
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
|
'v2.0.0',
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
const expected = path.join(
|
const expected = path.join(
|
||||||
DOCS_PATH,
|
DOCS_PATH,
|
||||||
@@ -81,7 +88,7 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct copy path with nested docPath', () => {
|
it('returns correct copy path with nested docPath', () => {
|
||||||
const result = getCopyPath(
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
version,
|
version,
|
||||||
doc,
|
doc,
|
||||||
'path/to/nested/doc'
|
'path/to/nested/doc'
|
||||||
@@ -115,13 +122,21 @@ describe('Markdoc lib functions', () => {
|
|||||||
folder: 'folder',
|
folder: 'folder',
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = getExamplePath(version, doc, docPath);
|
const result = MarkdocLibrary.getExamplePath(
|
||||||
|
version,
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
expect(result).toEqual('');
|
expect(result).toEqual('');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct example path', () => {
|
it('returns correct example path', () => {
|
||||||
const result = getExamplePath(version, doc, docPath);
|
const result = MarkdocLibrary.getExamplePath(
|
||||||
|
version,
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
const expected = path.join(
|
const expected = path.join(
|
||||||
DOCS_PATH,
|
DOCS_PATH,
|
||||||
@@ -134,7 +149,7 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct example path with leading/trailing slashes in docPath', () => {
|
it('returns correct example path with leading/trailing slashes in docPath', () => {
|
||||||
const result = getExamplePath(
|
const result = MarkdocLibrary.getExamplePath(
|
||||||
version,
|
version,
|
||||||
doc,
|
doc,
|
||||||
'/path/to/doc/'
|
'/path/to/doc/'
|
||||||
@@ -151,7 +166,11 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct example path with different version', () => {
|
it('returns correct example path with different version', () => {
|
||||||
const result = getExamplePath('v2.0.0', doc, docPath);
|
const result = MarkdocLibrary.getExamplePath(
|
||||||
|
'v2.0.0',
|
||||||
|
doc,
|
||||||
|
docPath
|
||||||
|
);
|
||||||
|
|
||||||
const expected = path.join(
|
const expected = path.join(
|
||||||
DOCS_PATH,
|
DOCS_PATH,
|
||||||
@@ -164,7 +183,7 @@ describe('Markdoc lib functions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('returns correct example path with nested docPath', () => {
|
it('returns correct example path with nested docPath', () => {
|
||||||
const result = getExamplePath(
|
const result = MarkdocLibrary.getExamplePath(
|
||||||
version,
|
version,
|
||||||
doc,
|
doc,
|
||||||
'path/to/nested/doc'
|
'path/to/nested/doc'
|
||||||
@@ -191,6 +210,10 @@ describe('Markdoc lib functions', () => {
|
|||||||
.mockReturnValue(sourceContent);
|
.mockReturnValue(sourceContent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
jest.restoreAllMocks();
|
||||||
|
});
|
||||||
|
|
||||||
it('should parse markdown file and return react node', () => {
|
it('should parse markdown file and return react node', () => {
|
||||||
const expected = (
|
const expected = (
|
||||||
<article>
|
<article>
|
||||||
@@ -198,13 +221,14 @@ describe('Markdoc lib functions', () => {
|
|||||||
</article>
|
</article>
|
||||||
);
|
);
|
||||||
|
|
||||||
const result = parseMarkdown(sourcePath);
|
const result =
|
||||||
|
MarkdocLibrary.parseMarkdown(sourcePath);
|
||||||
|
|
||||||
expect(result).toEqual(expected);
|
expect(result).toEqual(expected);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should read source file using the correct path', () => {
|
it('should read source file using the correct path', () => {
|
||||||
parseMarkdown(sourcePath);
|
MarkdocLibrary.parseMarkdown(sourcePath);
|
||||||
|
|
||||||
expect(fs.readFileSync).toHaveBeenCalledWith(
|
expect(fs.readFileSync).toHaveBeenCalledWith(
|
||||||
sourcePath,
|
sourcePath,
|
||||||
@@ -216,11 +240,11 @@ describe('Markdoc lib functions', () => {
|
|||||||
const ast = Markdoc.parse(sourceContent);
|
const ast = Markdoc.parse(sourceContent);
|
||||||
const spy = jest.spyOn(Markdoc, 'transform');
|
const spy = jest.spyOn(Markdoc, 'transform');
|
||||||
|
|
||||||
parseMarkdown(sourcePath);
|
MarkdocLibrary.parseMarkdown(sourcePath);
|
||||||
|
|
||||||
expect(spy).toHaveBeenCalledWith(
|
expect(spy).toHaveBeenCalledWith(
|
||||||
ast,
|
ast,
|
||||||
markDocConfig as any
|
MarkdocLibrary.markDocConfig as any
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -229,7 +253,7 @@ describe('Markdoc lib functions', () => {
|
|||||||
|
|
||||||
const content = Markdoc.transform(
|
const content = Markdoc.transform(
|
||||||
ast,
|
ast,
|
||||||
markDocConfig as any
|
MarkdocLibrary.markDocConfig as any
|
||||||
);
|
);
|
||||||
|
|
||||||
const expected = (
|
const expected = (
|
||||||
@@ -239,7 +263,8 @@ describe('Markdoc lib functions', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const spy = jest.spyOn(Markdoc.renderers, 'react');
|
const spy = jest.spyOn(Markdoc.renderers, 'react');
|
||||||
const result = parseMarkdown(sourcePath);
|
const result =
|
||||||
|
MarkdocLibrary.parseMarkdown(sourcePath);
|
||||||
|
|
||||||
expect(spy).toHaveBeenCalledWith(content, React, {
|
expect(spy).toHaveBeenCalledWith(content, React, {
|
||||||
components: {
|
components: {
|
||||||
@@ -252,4 +277,16 @@ describe('Markdoc lib functions', () => {
|
|||||||
expect(result).toEqual(expected);
|
expect(result).toEqual(expected);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getCopyChild', () => {
|
||||||
|
it('should return the correct child copy react nodes for the given doc', () => {
|
||||||
|
const result = MarkdocLibrary.getCopyPath(
|
||||||
|
'version',
|
||||||
|
{ title: 'hello', folder: 'hello' },
|
||||||
|
'hello'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(result).toEqual('hello');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user