summaryrefslogtreecommitdiff
path: root/spec/frontend/content_editor/markdown_snapshot_spec_helper.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/content_editor/markdown_snapshot_spec_helper.js')
-rw-r--r--spec/frontend/content_editor/markdown_snapshot_spec_helper.js96
1 files changed, 0 insertions, 96 deletions
diff --git a/spec/frontend/content_editor/markdown_snapshot_spec_helper.js b/spec/frontend/content_editor/markdown_snapshot_spec_helper.js
deleted file mode 100644
index 64988c5b717..00000000000
--- a/spec/frontend/content_editor/markdown_snapshot_spec_helper.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// See https://docs.gitlab.com/ee/development/gitlab_flavored_markdown/specification_guide/#markdown-snapshot-testing
-// for documentation on this spec.
-
-import jsYaml from 'js-yaml';
-import { pick } from 'lodash';
-import glfmExampleStatusYml from '../../../glfm_specification/input/gitlab_flavored_markdown/glfm_example_status.yml';
-import markdownYml from '../../../glfm_specification/output_example_snapshots/markdown.yml';
-import htmlYml from '../../../glfm_specification/output_example_snapshots/html.yml';
-import prosemirrorJsonYml from '../../../glfm_specification/output_example_snapshots/prosemirror_json.yml';
-import {
- IMPLEMENTATION_ERROR_MSG,
- renderHtmlAndJsonForAllExamples,
-} from './render_html_and_json_for_all_examples';
-
-const filterExamples = (examples) => {
- const focusedMarkdownExamples = process.env.FOCUSED_MARKDOWN_EXAMPLES?.split(',') || [];
- if (!focusedMarkdownExamples.length) {
- return examples;
- }
- return pick(examples, focusedMarkdownExamples);
-};
-
-const loadExamples = (yaml) => {
- const examples = jsYaml.safeLoad(yaml, {});
- return filterExamples(examples);
-};
-
-// eslint-disable-next-line jest/no-export
-export const describeMarkdownSnapshots = (description) => {
- let actualHtmlAndJsonExamples;
- let skipRunningSnapshotWysiwygHtmlTests;
- let skipRunningSnapshotProsemirrorJsonTests;
-
- const exampleStatuses = loadExamples(glfmExampleStatusYml);
- const markdownExamples = loadExamples(markdownYml);
- const expectedHtmlExamples = loadExamples(htmlYml);
- const expectedProseMirrorJsonExamples = loadExamples(prosemirrorJsonYml);
-
- beforeAll(async () => {
- return renderHtmlAndJsonForAllExamples(markdownExamples).then((examples) => {
- actualHtmlAndJsonExamples = examples;
- });
- });
-
- describe(description, () => {
- const exampleNames = Object.keys(markdownExamples);
-
- describe.each(exampleNames)('%s', (name) => {
- const exampleNamePrefix = 'verifies conversion of GLFM to';
- skipRunningSnapshotWysiwygHtmlTests =
- exampleStatuses[name]?.skip_running_snapshot_wysiwyg_html_tests;
- skipRunningSnapshotProsemirrorJsonTests =
- exampleStatuses[name]?.skip_running_snapshot_prosemirror_json_tests;
-
- const markdown = markdownExamples[name];
-
- if (skipRunningSnapshotWysiwygHtmlTests) {
- it.todo(`${exampleNamePrefix} HTML: ${skipRunningSnapshotWysiwygHtmlTests}`);
- } else {
- it(`${exampleNamePrefix} HTML`, async () => {
- const expectedHtml = expectedHtmlExamples[name].wysiwyg;
- const { html: actualHtml } = actualHtmlAndJsonExamples[name];
-
- // noinspection JSUnresolvedFunction (required to avoid RubyMine type inspection warning, because custom matchers auto-imported via Jest test setup are not automatically resolved - see https://youtrack.jetbrains.com/issue/WEB-42350/matcher-for-jest-is-not-recognized-but-it-is-runable)
- expect(actualHtml).toMatchExpectedForMarkdown(
- 'HTML',
- name,
- markdown,
- IMPLEMENTATION_ERROR_MSG,
- expectedHtml,
- );
- });
- }
-
- if (skipRunningSnapshotProsemirrorJsonTests) {
- it.todo(
- `${exampleNamePrefix} ProseMirror JSON: ${skipRunningSnapshotProsemirrorJsonTests}`,
- );
- } else {
- it(`${exampleNamePrefix} ProseMirror JSON`, async () => {
- const expectedJson = expectedProseMirrorJsonExamples[name];
- const { json: actualJson } = actualHtmlAndJsonExamples[name];
-
- // noinspection JSUnresolvedFunction
- expect(actualJson).toMatchExpectedForMarkdown(
- 'JSON',
- name,
- markdown,
- IMPLEMENTATION_ERROR_MSG,
- expectedJson,
- );
- });
- }
- });
- });
-};