diff options
Diffstat (limited to 'spec/frontend/content_editor/markdown_snapshot_spec_helper.js')
-rw-r--r-- | spec/frontend/content_editor/markdown_snapshot_spec_helper.js | 96 |
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, - ); - }); - } - }); - }); -}; |