2020-10-14 18:08:47 +00:00
|
|
|
import waitForPromises from 'helpers/wait_for_promises';
|
2020-07-01 18:08:50 +00:00
|
|
|
import EditBlob from '~/blob_edit/edit_blob';
|
|
|
|
import EditorLite from '~/editor/editor_lite';
|
2020-12-15 00:10:07 +00:00
|
|
|
import { EditorMarkdownExtension } from '~/editor/editor_markdown_ext';
|
|
|
|
import { FileTemplateExtension } from '~/editor/editor_file_template_ext';
|
2020-07-01 18:08:50 +00:00
|
|
|
|
|
|
|
jest.mock('~/editor/editor_lite');
|
|
|
|
jest.mock('~/editor/editor_markdown_ext');
|
2020-12-15 00:10:07 +00:00
|
|
|
jest.mock('~/editor/editor_file_template_ext');
|
2020-07-01 18:08:50 +00:00
|
|
|
|
|
|
|
describe('Blob Editing', () => {
|
2020-10-14 18:08:47 +00:00
|
|
|
const useMock = jest.fn();
|
|
|
|
const mockInstance = {
|
|
|
|
use: useMock,
|
|
|
|
getValue: jest.fn(),
|
|
|
|
focus: jest.fn(),
|
|
|
|
};
|
2020-07-01 18:08:50 +00:00
|
|
|
beforeEach(() => {
|
|
|
|
setFixtures(
|
2020-08-31 18:10:43 +00:00
|
|
|
`<div class="js-edit-blob-form"><div id="file_path"></div><div id="editor"></div><input id="file-content"></div>`,
|
2020-07-01 18:08:50 +00:00
|
|
|
);
|
2020-08-31 18:10:43 +00:00
|
|
|
jest.spyOn(EditorLite.prototype, 'createInstance').mockReturnValue(mockInstance);
|
2020-07-01 18:08:50 +00:00
|
|
|
});
|
2020-12-15 00:10:07 +00:00
|
|
|
afterEach(() => {
|
|
|
|
EditorMarkdownExtension.mockClear();
|
|
|
|
FileTemplateExtension.mockClear();
|
|
|
|
});
|
2020-07-01 18:08:50 +00:00
|
|
|
|
2020-10-14 18:08:47 +00:00
|
|
|
const editorInst = isMarkdown => {
|
2020-07-01 18:08:50 +00:00
|
|
|
return new EditBlob({
|
|
|
|
isMarkdown,
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
2020-10-14 18:08:47 +00:00
|
|
|
const initEditor = async (isMarkdown = false) => {
|
|
|
|
editorInst(isMarkdown);
|
|
|
|
await waitForPromises();
|
|
|
|
};
|
|
|
|
|
2020-08-31 18:10:43 +00:00
|
|
|
it('loads FileTemplateExtension by default', async () => {
|
2020-07-01 18:08:50 +00:00
|
|
|
await initEditor();
|
2020-12-15 00:10:07 +00:00
|
|
|
expect(FileTemplateExtension).toHaveBeenCalledTimes(1);
|
2020-07-01 18:08:50 +00:00
|
|
|
});
|
|
|
|
|
2020-08-31 18:10:43 +00:00
|
|
|
describe('Markdown', () => {
|
|
|
|
it('does not load MarkdownExtension by default', async () => {
|
|
|
|
await initEditor();
|
2020-12-15 00:10:07 +00:00
|
|
|
expect(EditorMarkdownExtension).not.toHaveBeenCalled();
|
2020-08-31 18:10:43 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
it('loads MarkdownExtension only for the markdown files', async () => {
|
|
|
|
await initEditor(true);
|
2020-10-14 18:08:47 +00:00
|
|
|
expect(useMock).toHaveBeenCalledTimes(2);
|
2020-12-15 00:10:07 +00:00
|
|
|
expect(FileTemplateExtension).toHaveBeenCalledTimes(1);
|
|
|
|
expect(EditorMarkdownExtension).toHaveBeenCalledTimes(1);
|
2020-08-31 18:10:43 +00:00
|
|
|
});
|
2020-07-01 18:08:50 +00:00
|
|
|
});
|
|
|
|
});
|