@digabi/exam-engine-core 22.1.6-alpha.1 → 22.1.6-alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. package/dist/__tests__/editor/Table.test.d.ts +2 -0
  2. package/dist/__tests__/editor/Table.test.d.ts.map +1 -0
  3. package/dist/__tests__/editor/Table.test.js +172 -0
  4. package/dist/__tests__/editor/Table.test.js.map +1 -0
  5. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  6. package/dist/components/grading-instructions/EditableGradingInstruction.d.ts.map +1 -1
  7. package/dist/components/grading-instructions/EditableGradingInstruction.js +8 -6
  8. package/dist/components/grading-instructions/EditableGradingInstruction.js.map +1 -1
  9. package/dist/components/grading-instructions/editor/Formula.d.ts +0 -3
  10. package/dist/components/grading-instructions/editor/Formula.d.ts.map +1 -1
  11. package/dist/components/grading-instructions/editor/Formula.js +0 -54
  12. package/dist/components/grading-instructions/editor/Formula.js.map +1 -1
  13. package/dist/components/grading-instructions/editor/Table.d.ts +0 -2
  14. package/dist/components/grading-instructions/editor/Table.d.ts.map +1 -1
  15. package/dist/components/grading-instructions/editor/Table.js +1 -42
  16. package/dist/components/grading-instructions/editor/Table.js.map +1 -1
  17. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts +4 -0
  18. package/dist/components/grading-instructions/editor/schemas/formulaSchema.d.ts.map +1 -0
  19. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js +55 -0
  20. package/dist/components/grading-instructions/editor/schemas/formulaSchema.js.map +1 -0
  21. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts +4 -0
  22. package/dist/components/grading-instructions/editor/schemas/imageSchema.d.ts.map +1 -0
  23. package/dist/components/grading-instructions/editor/schemas/imageSchema.js +47 -0
  24. package/dist/components/grading-instructions/editor/schemas/imageSchema.js.map +1 -0
  25. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts +3 -0
  26. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.d.ts.map +1 -0
  27. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js +19 -0
  28. package/dist/components/grading-instructions/editor/schemas/spanWithNowrapSchema.js.map +1 -0
  29. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts +3 -0
  30. package/dist/components/grading-instructions/editor/schemas/tableSchema.d.ts.map +1 -0
  31. package/dist/components/grading-instructions/editor/schemas/tableSchema.js +43 -0
  32. package/dist/components/grading-instructions/editor/schemas/tableSchema.js.map +1 -0
  33. package/dist/main-bundle.js +1 -1
  34. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ //# sourceMappingURL=Table.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.d.ts","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":"AAIA,OAAO,2BAA2B,CAAA"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("@testing-library/react");
7
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
8
+ const renderEditableGradingInstruction_1 = require("../utils/renderEditableGradingInstruction");
9
+ const util_1 = require("../utils/util");
10
+ require("@testing-library/jest-dom");
11
+ const act = react_1.act;
12
+ describe('Table', () => {
13
+ let cleanup;
14
+ let onContentChangeMock;
15
+ beforeEach(() => {
16
+ onContentChangeMock = jest.fn();
17
+ });
18
+ afterEach(() => {
19
+ if (cleanup) {
20
+ cleanup();
21
+ }
22
+ cleanup = null;
23
+ });
24
+ it('Table is rendered as expected', () => {
25
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
26
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
27
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData);
28
+ const table = result.container.querySelector('.ProseMirror');
29
+ expect(table.innerHTML).toBe(expectedOutput);
30
+ });
31
+ it('Change in table is returned as expected', async () => {
32
+ cleanup = mockCreateRange();
33
+ const inputData = '<table class="e-table"><tbody><tr><td>foo</td></tr></tbody></table>';
34
+ const expectedOutput = '<table class="e-table"><tbody><tr><td>bar</td></tr></tbody></table>';
35
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
36
+ await act(async () => {
37
+ (0, util_1.insertText)(await result.findByText('foo'), 'bar');
38
+ });
39
+ expect(onContentChangeMock).toHaveBeenCalledTimes(1);
40
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
41
+ });
42
+ it('Insert table adds expected table', async () => {
43
+ const inputData = '';
44
+ const expectedOutput = '<table class="e-table e-width-half"><tbody><tr><td></td><td></td></tr><tr><td></td><td></td></tr></tbody></table>';
45
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
46
+ await act(async () => {
47
+ await user_event_1.default.click(await result.findByTestId('editor-menu-add-table'));
48
+ });
49
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
50
+ });
51
+ it('Remove table removes table', async () => {
52
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
53
+ const expectedOutput = '<p></p>';
54
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
55
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista taulukko');
56
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
57
+ });
58
+ it('Insert column adds column', async () => {
59
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
60
+ const expectedOutput = '<table><tbody><tr><td>foo</td><td></td></tr></tbody></table>';
61
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
62
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää sarake');
63
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
64
+ });
65
+ it('Remove column removes column', async () => {
66
+ const inputData = '<table><tbody><tr><td>foo</td><td>bar</td></tr></tbody></table>';
67
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
68
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
69
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista sarake');
70
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
71
+ });
72
+ it('Insert row adds row', async () => {
73
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
74
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr><tr><td></td></tr></tbody></table>';
75
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
76
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää rivi');
77
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
78
+ });
79
+ it('Remove row removes row', async () => {
80
+ const inputData = '<table><tbody><tr><td>foo</td></tr><tr><td>bar</td></tr></tbody></table>';
81
+ const expectedOutput = '<table><tbody><tr><td>bar</td></tr></tbody></table>';
82
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
83
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista rivi');
84
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
85
+ });
86
+ it('Full width changes full width class to table', async () => {
87
+ const inputData = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
88
+ const expectedOutput = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
89
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
90
+ expect(result.queryByText('Puolikas leveys')).not.toBeInTheDocument();
91
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Täysi leveys');
92
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
93
+ });
94
+ it('Half width changes half width class to table', async () => {
95
+ const inputData = '<table class="e-width-full"><tbody><tr><td>foo</td></tr></tbody></table>';
96
+ const expectedOutput = '<table class="e-width-half"><tbody><tr><td>foo</td></tr></tbody></table>';
97
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
98
+ expect(result.queryByText('Täysi leveys')).not.toBeInTheDocument();
99
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Puolikas leveys');
100
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
101
+ });
102
+ it('Remove borders adds e-table--borderless class to table', async () => {
103
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
104
+ const expectedOutput = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
105
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
106
+ expect(result.queryByText('Lisää reunat')).not.toBeInTheDocument();
107
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista reunat');
108
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
109
+ });
110
+ it('Add borders removes e-table--borderless class from table', async () => {
111
+ const inputData = '<table class="e-table--borderless"><tbody><tr><td>foo</td></tr></tbody></table>';
112
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
113
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
114
+ expect(result.queryByText('Poista reunat')).not.toBeInTheDocument();
115
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää reunat');
116
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
117
+ });
118
+ it('Remove zebra removes class from table', async () => {
119
+ const inputData = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
120
+ const expectedOutput = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
121
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
122
+ expect(result.queryByText('Lisää raidat')).not.toBeInTheDocument();
123
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Poista raidat');
124
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
125
+ });
126
+ it('Add zebra adds e-table--zebra class to table', async () => {
127
+ const inputData = '<table><tbody><tr><td>foo</td></tr></tbody></table>';
128
+ const expectedOutput = '<table class="e-table--zebra"><tbody><tr><td>foo</td></tr></tbody></table>';
129
+ const result = (0, renderEditableGradingInstruction_1.renderGradingInstruction)(inputData, onContentChangeMock);
130
+ expect(result.queryByText('Poista raidat')).not.toBeInTheDocument();
131
+ await clickTableMenuButtonWithFocusOnCell(result, 'foo', 'Lisää raidat');
132
+ expect(onContentChangeMock).toHaveBeenCalledWith(expectedOutput, '');
133
+ });
134
+ });
135
+ async function clickTableMenuButtonWithFocusOnCell(result, cellText, buttonText) {
136
+ await act(async () => {
137
+ await focusOnTablesCell(result, cellText);
138
+ await user_event_1.default.click(await result.findByText(buttonText));
139
+ });
140
+ }
141
+ async function focusOnTablesCell(result, text) {
142
+ // Replace cell's text with same text
143
+ // Hack to get focus on cell without need to mock createRange
144
+ (0, util_1.insertText)(await result.findByText(text), text);
145
+ }
146
+ function mockCreateRange() {
147
+ const originalCreateRange = global.window.document.createRange;
148
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
149
+ // @ts-expect-error
150
+ global.Range = function Range() { };
151
+ const createContextualFragment = (html) => {
152
+ const div = document.createElement('div');
153
+ div.innerHTML = html;
154
+ return div.children[0];
155
+ };
156
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
157
+ // @ts-expect-error
158
+ Range.prototype.createContextualFragment = (html) => createContextualFragment(html);
159
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
160
+ // @ts-expect-error
161
+ global.window.document.createRange = function createRange() {
162
+ return {
163
+ setEnd: () => { },
164
+ setStart: () => { },
165
+ getBoundingClientRect: () => ({ right: 0 }),
166
+ getClientRects: () => [],
167
+ createContextualFragment
168
+ };
169
+ };
170
+ return () => (global.window.document.createRange = originalCreateRange);
171
+ }
172
+ //# sourceMappingURL=Table.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.test.js","sourceRoot":"","sources":["../../../__tests__/editor/Table.test.tsx"],"names":[],"mappings":"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"}