@digabi/exam-engine-rendering 23.0.2 → 23.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PreviewGrading.js +17 -7
- package/dist/PreviewGrading.js.map +1 -1
- package/dist/__tests__/testChoiceAnswer.js +5 -5
- package/dist/__tests__/testEditableGradingInstruction.d.ts +2 -0
- package/dist/__tests__/testEditableGradingInstruction.d.ts.map +1 -0
- package/dist/__tests__/testEditableGradingInstruction.js +176 -0
- package/dist/__tests__/testEditableGradingInstruction.js.map +1 -0
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/createOfflineExam.js +17 -7
- package/dist/createOfflineExam.js.map +1 -1
- package/dist/exam-loader.js +17 -7
- package/dist/exam-loader.js.map +1 -1
- package/dist/postcss.config.d.ts +1 -1
- package/dist/preview.js +17 -7
- package/dist/preview.js.map +1 -1
- package/package.json +3 -3
package/dist/PreviewGrading.js
CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
15
15
|
}) : function(o, v) {
|
16
16
|
o["default"] = v;
|
17
17
|
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
};
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
19
|
+
var ownKeys = function(o) {
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
21
|
+
var ar = [];
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
23
|
+
return ar;
|
24
|
+
};
|
25
|
+
return ownKeys(o);
|
26
|
+
};
|
27
|
+
return function (mod) {
|
28
|
+
if (mod && mod.__esModule) return mod;
|
29
|
+
var result = {};
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
31
|
+
__setModuleDefault(result, mod);
|
32
|
+
return result;
|
33
|
+
};
|
34
|
+
})();
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
36
|
const react_1 = __importStar(require("react"));
|
27
37
|
const ResultsContext_1 = require("@digabi/exam-engine-core/dist/components/context/ResultsContext");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PreviewGrading.js","sourceRoot":"","sources":["../src/PreviewGrading.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"PreviewGrading.js","sourceRoot":"","sources":["../src/PreviewGrading.tsx"],"names":[],"mappings":"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"}
|
@@ -20,12 +20,12 @@ describe('testChoiceAnswer.ts - choice answer interactions', () => {
|
|
20
20
|
});
|
21
21
|
it('remembers the choices after reloading', async () => {
|
22
22
|
await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
|
23
|
-
await setChoiceAnswer(page, 1, '
|
23
|
+
await setChoiceAnswer(page, 1, '106');
|
24
24
|
await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
|
25
|
-
expect(await getRadioButtonValue(page, 1)).toBe('
|
26
|
-
await setChoiceAnswer(page, 1, '
|
25
|
+
expect(await getRadioButtonValue(page, 1)).toBe('106');
|
26
|
+
await setChoiceAnswer(page, 1, '104');
|
27
27
|
await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
|
28
|
-
expect(await getRadioButtonValue(page, 1)).toBe('
|
28
|
+
expect(await getRadioButtonValue(page, 1)).toBe('104');
|
29
29
|
});
|
30
30
|
it('a choice answer indicator has correct state in side navigation', async () => {
|
31
31
|
var _a, _b, _c, _d;
|
@@ -33,7 +33,7 @@ describe('testChoiceAnswer.ts - choice answer interactions', () => {
|
|
33
33
|
const indicator = await page.$('.sidebar-toc-container div[data-indicator-id="44"]');
|
34
34
|
const className = await ((_a = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _a === void 0 ? void 0 : _a.jsonValue());
|
35
35
|
const indicatorValue = await ((_b = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('innerHTML')))) === null || _b === void 0 ? void 0 : _b.jsonValue());
|
36
|
-
await setChoiceAnswer(page, 44, '
|
36
|
+
await setChoiceAnswer(page, 44, '218');
|
37
37
|
const classNameThen = await ((_c = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('className')))) === null || _c === void 0 ? void 0 : _c.jsonValue());
|
38
38
|
const indicatorValueThen = await ((_d = (await (indicator === null || indicator === void 0 ? void 0 : indicator.getProperty('innerHTML')))) === null || _d === void 0 ? void 0 : _d.jsonValue());
|
39
39
|
expect(className).not.toContain('ok');
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"testEditableGradingInstruction.d.ts","sourceRoot":"","sources":["../../__tests__/testEditableGradingInstruction.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,176 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const exam_engine_exams_1 = require("@digabi/exam-engine-exams");
|
4
|
+
const exam_engine_rendering_1 = require("@digabi/exam-engine-rendering");
|
5
|
+
const puppeteerUtils_1 = require("./puppeteerUtils");
|
6
|
+
describe('testEditableGradingInstruction.ts — Grading instruction editing', () => {
|
7
|
+
const createPage = (0, puppeteerUtils_1.initPuppeteer)();
|
8
|
+
let page;
|
9
|
+
let ctx;
|
10
|
+
beforeAll(async () => {
|
11
|
+
ctx = await (0, exam_engine_rendering_1.previewExam)((0, exam_engine_exams_1.resolveExam)('SC/SC.xml'), { editableGradingInstructions: true });
|
12
|
+
page = await createPage();
|
13
|
+
});
|
14
|
+
afterAll(async () => {
|
15
|
+
await ctx.close();
|
16
|
+
});
|
17
|
+
describe('list', () => {
|
18
|
+
it('New bullet list can be added', async () => {
|
19
|
+
await openGradingInstructionsPage();
|
20
|
+
await focusOnEditor();
|
21
|
+
await page.click('.e-answer-grading-instruction [data-testid="editor-menu-add-bullet_list"]');
|
22
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
23
|
+
expect(value).toContain(`<ul><li><p><br class="ProseMirror-trailingBreak"></p></li></ul>`);
|
24
|
+
});
|
25
|
+
it('New ordered list can be added', async () => {
|
26
|
+
await openGradingInstructionsPage();
|
27
|
+
await focusOnEditor();
|
28
|
+
await page.click('.e-answer-grading-instruction [data-testid="editor-menu-add-ordered_list"]');
|
29
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
30
|
+
expect(value).toContain(`<ol><li><p><br class="ProseMirror-trailingBreak"></p></li></ol>`);
|
31
|
+
});
|
32
|
+
it('New list item can be added with enter', async () => {
|
33
|
+
await openGradingInstructionsPage();
|
34
|
+
await focusOnEditor();
|
35
|
+
await page.click('.e-answer-grading-instruction [data-testid="editor-menu-add-bullet_list"]');
|
36
|
+
await page.type('.e-answer-grading-instruction .ProseMirror li', 'foo');
|
37
|
+
await page.keyboard.press('Enter');
|
38
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
39
|
+
expect(value).toContain(`<ul><li><p>foo</p></li><li><p><br class="ProseMirror-trailingBreak"></p></li></ul>`);
|
40
|
+
});
|
41
|
+
it('List can be splitted in half with double enter', async () => {
|
42
|
+
await openGradingInstructionsPage();
|
43
|
+
await focusOnEditor();
|
44
|
+
await page.click('.e-answer-grading-instruction [data-testid="editor-menu-add-bullet_list"]');
|
45
|
+
await page.type('.e-answer-grading-instruction .ProseMirror li', 'foo');
|
46
|
+
await page.keyboard.press('Enter');
|
47
|
+
await page.type('.e-answer-grading-instruction .ProseMirror li:nth-child(2)', 'bar');
|
48
|
+
await page.click('.e-answer-grading-instruction .ProseMirror li:nth-child(1)');
|
49
|
+
await page.keyboard.press('Enter');
|
50
|
+
await page.keyboard.press('Enter');
|
51
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
52
|
+
expect(value).toContain(`<ul><li><p>foo</p></li></ul><p><br class="ProseMirror-trailingBreak"></p><ul><li><p>bar</p></li></ul>`);
|
53
|
+
});
|
54
|
+
it('Indentation can be changed with tab and shift-tab', async () => {
|
55
|
+
await openGradingInstructionsPage();
|
56
|
+
await focusOnEditor();
|
57
|
+
await page.click('.e-answer-grading-instruction [data-testid="editor-menu-add-bullet_list"]');
|
58
|
+
await page.type('.e-answer-grading-instruction .ProseMirror li', 'foo');
|
59
|
+
await page.keyboard.press('Enter');
|
60
|
+
await page.keyboard.press('Tab');
|
61
|
+
const valueTab = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
62
|
+
expect(valueTab).toContain(`<ul><li><p>foo</p><ul><li><p><br class="ProseMirror-trailingBreak"></p></li></ul></li></ul>`);
|
63
|
+
await page.keyboard.down('Shift');
|
64
|
+
await page.keyboard.press('Tab');
|
65
|
+
await page.keyboard.up('Shift');
|
66
|
+
const valueShiftTab = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
67
|
+
expect(valueShiftTab).toContain(`<ul><li><p>foo</p></li><li><p><br class="ProseMirror-trailingBreak"></p></li></ul>`);
|
68
|
+
});
|
69
|
+
});
|
70
|
+
describe('e:formula', () => {
|
71
|
+
it('New equation can be added', async () => {
|
72
|
+
await openGradingInstructionsPage();
|
73
|
+
await addEquation('\\sqrt{1}');
|
74
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
75
|
+
expect(value).toContain(`<img alt="\\sqrt{1}" formula="true" src="/math.svg?latex=${encodeURIComponent('\\sqrt{1}')}" contenteditable="false">`);
|
76
|
+
});
|
77
|
+
it('New equation cannot be added if formula popup is already open', async () => {
|
78
|
+
await openGradingInstructionsPage();
|
79
|
+
await focusOnEditor();
|
80
|
+
expect(await getDisabledStatus(page, '.e-answer-grading-instruction [data-testid="add-formula"]')).toBeFalsy();
|
81
|
+
await addFormula();
|
82
|
+
expect(await getDisabledStatus(page, '.e-answer-grading-instruction [data-testid="add-formula"]')).toBeTruthy();
|
83
|
+
});
|
84
|
+
it('Equation can be deleted', async () => {
|
85
|
+
await openGradingInstructionsPage();
|
86
|
+
await addEquation('\\sqrt{1}');
|
87
|
+
await openEquationEditor(`\\\\sqrt{1}`);
|
88
|
+
await page.click('[data-testid="e-popup-delete"]');
|
89
|
+
await page.click('[data-testid="e-popup-delete"]');
|
90
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
91
|
+
expect(value).not.toContain('src="/math.svg?latex=\\sqrt{1}"');
|
92
|
+
});
|
93
|
+
it('Added equation can be modified', async () => {
|
94
|
+
await openGradingInstructionsPage();
|
95
|
+
await addEquation('\\sqrt{1}');
|
96
|
+
await openEquationEditor(`\\\\sqrt{1}`);
|
97
|
+
await openMathEquationEditor('\\\\sqrt{1}');
|
98
|
+
await replaceLatex('\\sqrt{2}');
|
99
|
+
await saveEquation();
|
100
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
101
|
+
expect(value).toContain(`<img alt="\\sqrt{2}" formula="true" src="/math.svg?latex=${encodeURIComponent('\\sqrt{2}')}" contenteditable="false">`);
|
102
|
+
});
|
103
|
+
it('Changes can be cancelled', async () => {
|
104
|
+
await openGradingInstructionsPage();
|
105
|
+
await addEquation('\\sqrt{1}');
|
106
|
+
await openEquationEditor(`\\\\sqrt{1}`);
|
107
|
+
await openMathEquationEditor('\\\\sqrt{1}');
|
108
|
+
await replaceLatex('\\sqrt{2}');
|
109
|
+
await page.click('[data-testid="e-popup-cancel"]');
|
110
|
+
const value = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
111
|
+
expect(value).toContain(`<img alt="\\sqrt{1}" formula="true" src="/math.svg?latex=${encodeURIComponent('\\sqrt{1}')}" contenteditable="false">`);
|
112
|
+
});
|
113
|
+
it('Non-equation cannot be saved and error is shown', async () => {
|
114
|
+
await openGradingInstructionsPage();
|
115
|
+
await focusOnEditor();
|
116
|
+
await addFormula();
|
117
|
+
await page.type('.e-popup-content', 'text');
|
118
|
+
expect(await page.waitForSelector(`[data-testid="e-popup-save"]:disabled`)).toBeTruthy();
|
119
|
+
expect(await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-popup-error')).toBe('Ainoastaan yksi kaava sallittu');
|
120
|
+
});
|
121
|
+
async function getDisabledStatus(page, selector) {
|
122
|
+
return page.$eval(selector, e => {
|
123
|
+
if (e instanceof HTMLButtonElement) {
|
124
|
+
return e.disabled;
|
125
|
+
}
|
126
|
+
throw new Error('Not a button');
|
127
|
+
});
|
128
|
+
}
|
129
|
+
async function replaceLatex(latex) {
|
130
|
+
await clearInput('.math-editor-latex-field');
|
131
|
+
await page.type('.math-editor-latex-field', latex);
|
132
|
+
}
|
133
|
+
async function openEquationEditor(latex) {
|
134
|
+
await page.click(`img[alt="${latex}"]`);
|
135
|
+
}
|
136
|
+
async function openMathEquationEditor(latex) {
|
137
|
+
await page.click(`.e-popup img[alt="${latex}"]`);
|
138
|
+
}
|
139
|
+
async function clearInput(selector) {
|
140
|
+
await page.evaluate(selector => {
|
141
|
+
const input = document.querySelector(selector);
|
142
|
+
input.value = '';
|
143
|
+
input.dispatchEvent(new Event('input', { bubbles: true })); //
|
144
|
+
}, selector);
|
145
|
+
}
|
146
|
+
async function addEquation(latex) {
|
147
|
+
await focusOnEditor();
|
148
|
+
await addFormula();
|
149
|
+
await addMathEquation();
|
150
|
+
await page.type('.math-editor-latex-field', latex);
|
151
|
+
await saveEquation();
|
152
|
+
}
|
153
|
+
async function saveEquation() {
|
154
|
+
await page.click(`.e-popup-button-area`);
|
155
|
+
await page.waitForSelector(`[data-testid="e-popup-save"]:not(:disabled)`);
|
156
|
+
await page.click('[data-testid="e-popup-save"]');
|
157
|
+
}
|
158
|
+
async function addFormula() {
|
159
|
+
await page.click('.e-answer-grading-instruction [data-testid="add-formula"]');
|
160
|
+
}
|
161
|
+
async function addMathEquation() {
|
162
|
+
await page.waitForSelector('.rich-text-editor-tools-row');
|
163
|
+
await page.keyboard.down('Control');
|
164
|
+
await page.keyboard.press('KeyE');
|
165
|
+
await page.keyboard.up('Control');
|
166
|
+
}
|
167
|
+
});
|
168
|
+
async function focusOnEditor() {
|
169
|
+
await page.click(`.e-answer-grading-instruction .ProseMirror`);
|
170
|
+
}
|
171
|
+
async function openGradingInstructionsPage() {
|
172
|
+
await (0, puppeteerUtils_1.loadExam)(page, ctx.url);
|
173
|
+
await page.goto(`${ctx.url}/fi-FI/normal/grading-instructions`);
|
174
|
+
}
|
175
|
+
});
|
176
|
+
//# sourceMappingURL=testEditableGradingInstruction.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"testEditableGradingInstruction.js","sourceRoot":"","sources":["../../__tests__/testEditableGradingInstruction.ts"],"names":[],"mappings":"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"}
|