Welcome to mirror list, hosted at ThFree Co, Russian Federation.

editor_lite_extension_base_spec.js « editor « frontend « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5490e9dc7b56367da5fae174438fd565fc7b93ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { ERROR_INSTANCE_REQUIRED_FOR_EXTENSION } from '~/editor/constants';
import { EditorLiteExtension } from '~/editor/extensions/editor_lite_extension_base';

describe('The basis for an Editor Lite extension', () => {
  let ext;
  const defaultOptions = { foo: 'bar' };

  it.each`
    description                                                     | instance     | options
    ${'accepts configuration options and instance'}                 | ${{}}        | ${defaultOptions}
    ${'leaves instance intact if no options are passed'}            | ${{}}        | ${undefined}
    ${'does not fail if both instance and the options are omitted'} | ${undefined} | ${undefined}
    ${'throws if only options are passed'}                          | ${undefined} | ${defaultOptions}
  `('$description', ({ instance, options } = {}) => {
    const originalInstance = { ...instance };

    if (instance) {
      if (options) {
        Object.entries(options).forEach((prop) => {
          expect(instance[prop]).toBeUndefined();
        });
        // Both instance and options are passed
        ext = new EditorLiteExtension({ instance, ...options });
        Object.entries(options).forEach(([prop, value]) => {
          expect(ext[prop]).toBeUndefined();
          expect(instance[prop]).toBe(value);
        });
      } else {
        ext = new EditorLiteExtension({ instance });
        expect(instance).toEqual(originalInstance);
      }
    } else if (options) {
      // Options are passed without instance
      expect(() => {
        ext = new EditorLiteExtension({ ...options });
      }).toThrow(ERROR_INSTANCE_REQUIRED_FOR_EXTENSION);
    } else {
      // Neither options nor instance are passed
      expect(() => {
        ext = new EditorLiteExtension();
      }).not.toThrow();
    }
  });
});