@digabi/exam-engine-rendering 22.0.3 → 22.0.4-alpha.1
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/__tests__/puppeteerUtils.d.ts +1 -0
- package/dist/__tests__/puppeteerUtils.d.ts.map +1 -1
- package/dist/__tests__/puppeteerUtils.js +11 -0
- package/dist/__tests__/puppeteerUtils.js.map +1 -1
- 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__/testEditableGradingInstructionLocalizations.d.ts +2 -0
- package/dist/__tests__/testEditableGradingInstructionLocalizations.d.ts.map +1 -0
- package/dist/__tests__/testEditableGradingInstructionLocalizations.js +86 -0
- package/dist/__tests__/testEditableGradingInstructionLocalizations.js.map +1 -0
- package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
- package/dist/exam-loader.d.ts.map +1 -1
- package/dist/exam-loader.js +4 -1
- package/dist/exam-loader.js.map +1 -1
- package/dist/getPreviewWebpackConfig.d.ts.map +1 -1
- package/dist/getPreviewWebpackConfig.js +2 -1
- package/dist/getPreviewWebpackConfig.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/preview-edit.d.ts +2 -0
- package/dist/preview-edit.d.ts.map +1 -0
- package/dist/preview-edit.js +182 -0
- package/dist/preview-edit.js.map +1 -0
- package/dist/preview.js +14 -1
- package/dist/preview.js.map +1 -1
- package/package.json +3 -3
@@ -3,6 +3,7 @@ export declare function initPuppeteer(): () => Promise<Page>;
|
|
3
3
|
export declare function loadExam(page: Page, url: string): Promise<void>;
|
4
4
|
export declare function delay(millis: number): Promise<void>;
|
5
5
|
export declare function getInnerText(page: Page, selector: string): Promise<string>;
|
6
|
+
export declare function getInnerHtml(page: Page, selector: string): Promise<string>;
|
6
7
|
export declare function getOuterHtml(page: Page, selector: string): Promise<string>;
|
7
8
|
export declare function getTextContent(page: Page, selector: string): Promise<string>;
|
8
9
|
export declare function getPageAndRequestErrors(page: Page, filename: string): Promise<{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"puppeteerUtils.d.ts","sourceRoot":"","sources":["../../__tests__/puppeteerUtils.ts"],"names":[],"mappings":"AAEA,OAAkB,EAAW,IAAI,EAAE,MAAM,WAAW,CAAA;AAIpD,wBAAgB,aAAa,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAmBnD;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlF;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;;;GAczE"}
|
1
|
+
{"version":3,"file":"puppeteerUtils.d.ts","sourceRoot":"","sources":["../../__tests__/puppeteerUtils.ts"],"names":[],"mappings":"AAEA,OAAkB,EAAW,IAAI,EAAE,MAAM,WAAW,CAAA;AAIpD,wBAAgB,aAAa,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,CAmBnD;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlF;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;;;GAczE"}
|
@@ -7,6 +7,7 @@ exports.initPuppeteer = initPuppeteer;
|
|
7
7
|
exports.loadExam = loadExam;
|
8
8
|
exports.delay = delay;
|
9
9
|
exports.getInnerText = getInnerText;
|
10
|
+
exports.getInnerHtml = getInnerHtml;
|
10
11
|
exports.getOuterHtml = getOuterHtml;
|
11
12
|
exports.getTextContent = getTextContent;
|
12
13
|
exports.getPageAndRequestErrors = getPageAndRequestErrors;
|
@@ -48,6 +49,16 @@ async function getInnerText(page, selector) {
|
|
48
49
|
}
|
49
50
|
});
|
50
51
|
}
|
52
|
+
async function getInnerHtml(page, selector) {
|
53
|
+
return page.$eval(selector, e => {
|
54
|
+
if (e instanceof HTMLElement) {
|
55
|
+
return e.innerHTML;
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
throw new Error(`Expected a HTML element, got ${e.localName}`);
|
59
|
+
}
|
60
|
+
});
|
61
|
+
}
|
51
62
|
async function getOuterHtml(page, selector) {
|
52
63
|
return page.$eval(selector, e => {
|
53
64
|
if (e instanceof HTMLElement) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"puppeteerUtils.js","sourceRoot":"","sources":["../../__tests__/puppeteerUtils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;AAMZ,sCAmBC;AAED,4BAGC;AAED,sBAEC;AAED,oCAQC;AAED,oCAQC;AAED,wCAQC;AAED,0DAcC;
|
1
|
+
{"version":3,"file":"puppeteerUtils.js","sourceRoot":"","sources":["../../__tests__/puppeteerUtils.ts"],"names":[],"mappings":"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"}
|
@@ -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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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"testEditableGradingInstructionLocalizations.d.ts","sourceRoot":"","sources":["../../__tests__/testEditableGradingInstructionLocalizations.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,86 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const exam_engine_rendering_1 = require("@digabi/exam-engine-rendering");
|
4
|
+
const puppeteerUtils_1 = require("./puppeteerUtils");
|
5
|
+
const langs = ['fi-FI', 'sv-FI'];
|
6
|
+
const examTypes = ['hearing-impaired', 'visually-impaired'];
|
7
|
+
describe('testEditableGradingInstructionLocalization.ts — Grading instruction localize editing', () => {
|
8
|
+
const createPage = (0, puppeteerUtils_1.initPuppeteer)();
|
9
|
+
let page;
|
10
|
+
let ctx;
|
11
|
+
let origEditableGradingInstructions = undefined;
|
12
|
+
beforeAll(async () => {
|
13
|
+
origEditableGradingInstructions = process.env.EDITABLE_GRADING_INSTRUCTIONS;
|
14
|
+
process.env.EDITABLE_GRADING_INSTRUCTIONS = 'true';
|
15
|
+
ctx = await (0, exam_engine_rendering_1.previewExam)(`${__dirname}/fixtures/XX/koe.xml`, {
|
16
|
+
editableGradingInstructions: true
|
17
|
+
});
|
18
|
+
page = await createPage();
|
19
|
+
});
|
20
|
+
afterAll(async () => {
|
21
|
+
process.env.EDITABLE_GRADING_INSTRUCTIONS = origEditableGradingInstructions;
|
22
|
+
await ctx.close();
|
23
|
+
});
|
24
|
+
it('renders exam grading instructions as read-only (removing unnecessary localizations), exam grading instructions are not editable', async () => {
|
25
|
+
await page.goto(`${ctx.url}/fi-FI/normal/grading-instructions`);
|
26
|
+
await page.waitForSelector('.e-exam-grading-instruction');
|
27
|
+
const valueFi = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-exam-grading-instruction');
|
28
|
+
expect(valueFi.replace(/\n\s+/g, ' ')).toContain(` Normaali tekstikappale <br> <span>Lokalisaatio: Ei attribuutteja <br> </span> <span lang="fi-FI">Lokalisaatio: FI only <br> </span> `);
|
29
|
+
await page.goto(`${ctx.url}/sv-FI/visually-impaired/grading-instructions`);
|
30
|
+
await page.waitForSelector('.e-exam-grading-instruction');
|
31
|
+
const valueSv = await (0, puppeteerUtils_1.getInnerHtml)(page, '.e-exam-grading-instruction');
|
32
|
+
expect(valueSv.replace(/\n\s+/g, ' ')).toContain(` Normaali tekstikappale <br> <span>Lokalisaatio: Ei attribuutteja <br> </span> <span lang="sv-FI">Lokalisaatio: SV only <br> </span> <span lang="sv-FI">Lokalisaatio: SV NV <br> </span> <span>Lokalisaatio: NV only <br> </span> `);
|
33
|
+
});
|
34
|
+
it('renders all grading instructions regardless the localization (language or exam type)', async () => {
|
35
|
+
const valueFi = await getProseMirrorContent(page, `${ctx.url}/fi-FI/visually-impaired/grading-instructions`);
|
36
|
+
expect(valueFi).toContain('<p>Normaali tekstikappale <br> <span>Lokalisaatio: Ei attribuutteja <br></span> <span lang="fi-FI">Lokalisaatio: FI only <br> <span lang="fi-FI" exam-type="hearing-impaired" hidden="hidden">Lokalisaatio: FI KV (supports localization nesting) <br></span></span> <span lang="fi-FI" exam-type="visually-impaired">Lokalisaatio: FI NV <br></span> <span lang="fi-FI" exam-type="visually-impaired">Lokalisaatio: FI NV <br></span><br class="ProseMirror-trailingBreak"></p><div lang="sv-FI" hidden="hidden"><p>Lokalisaatio: SV only</p></div><p><span lang="sv-FI" exam-type="hearing-impaired" hidden="hidden">Lokalisaatio: SV KV <br></span> <span lang="sv-FI" exam-type="visually-impaired" hidden="hidden">Lokalisaatio: SV NV <br></span> <span exam-type="hearing-impaired" hidden="hidden">Lokalisaatio: KV only <br></span> <span exam-type="visually-impaired">Lokalisaatio: NV only <br></span><br class="ProseMirror-trailingBreak"></p><div lang="sv-FI" hidden="hidden"><table><tbody><tr><td>Testitaulukko</td></tr></tbody></table></div>');
|
37
|
+
const valueSv = await getProseMirrorContent(page, `${ctx.url}/sv-FI/hearing-impaired/grading-instructions`);
|
38
|
+
expect(valueSv).toContain('<p>Normaali tekstikappale <br> <span>Lokalisaatio: Ei attribuutteja <br></span> <span lang="fi-FI" hidden="hidden">Lokalisaatio: FI only <br> <span lang="fi-FI" exam-type="hearing-impaired" hidden="hidden">Lokalisaatio: FI KV (supports localization nesting) <br></span></span> <span lang="fi-FI" exam-type="visually-impaired" hidden="hidden">Lokalisaatio: FI NV <br></span> <span lang="fi-FI" exam-type="visually-impaired" hidden="hidden">Lokalisaatio: FI NV <br></span><br class="ProseMirror-trailingBreak"></p><div lang="sv-FI"><p>Lokalisaatio: SV only</p></div><p><span lang="sv-FI" exam-type="hearing-impaired">Lokalisaatio: SV KV <br></span> <span lang="sv-FI" exam-type="visually-impaired" hidden="hidden">Lokalisaatio: SV NV <br></span> <span exam-type="hearing-impaired">Lokalisaatio: KV only <br></span> <span exam-type="visually-impaired" hidden="hidden">Lokalisaatio: NV only <br></span><br class="ProseMirror-trailingBreak"></p><div lang="sv-FI"><table><tbody><tr><td>Testitaulukko</td></tr></tbody></table></div>');
|
39
|
+
});
|
40
|
+
it('hides grading instruction localizations not belonging to the opened page', async () => {
|
41
|
+
const value = await getProseMirrorContent(page, `${ctx.url}/fi-FI/normal/grading-instructions`);
|
42
|
+
expect(value).toContain('<span lang="fi-FI" exam-type="hearing-impaired" hidden="hidden">');
|
43
|
+
expect(value).toContain('<span lang="fi-FI" exam-type="visually-impaired" hidden="hidden">');
|
44
|
+
expect(value).toContain('<div lang="sv-FI" hidden="hidden">');
|
45
|
+
expect(value).toContain('<span lang="sv-FI" exam-type="hearing-impaired" hidden="hidden">');
|
46
|
+
expect(value).toContain('<span lang="sv-FI" exam-type="visually-impaired" hidden="hidden">');
|
47
|
+
});
|
48
|
+
it('grading instruction without localization is shown on all pages', async () => {
|
49
|
+
for (const lang of langs) {
|
50
|
+
for (const examType of examTypes) {
|
51
|
+
const value = await getProseMirrorContent(page, `${ctx.url}/${lang}/${examType}/grading-instructions`);
|
52
|
+
expect(value).toContain('Normaali tekstikappale');
|
53
|
+
}
|
54
|
+
}
|
55
|
+
});
|
56
|
+
it('grading instruction localization without any attributes is shown on all pages', async () => {
|
57
|
+
for (const lang of langs) {
|
58
|
+
for (const examType of examTypes) {
|
59
|
+
const value = await getProseMirrorContent(page, `${ctx.url}/${lang}/${examType}/grading-instructions`);
|
60
|
+
expect(value).toContain('Lokalisaatio: Ei attribuutteja');
|
61
|
+
}
|
62
|
+
}
|
63
|
+
});
|
64
|
+
it('grading instruction localization with language attribute shows instruction all pages to that language, regardless the exam type', async () => {
|
65
|
+
for (const examType of examTypes) {
|
66
|
+
const valueFi = await getProseMirrorContent(page, `${ctx.url}/fi-FI/${examType}/grading-instructions`);
|
67
|
+
expect(valueFi).toContain('Lokalisaatio: FI only');
|
68
|
+
const valueSv = await getProseMirrorContent(page, `${ctx.url}/sv-FI/${examType}/grading-instructions`);
|
69
|
+
expect(valueSv).toContain('Lokalisaatio: SV only');
|
70
|
+
}
|
71
|
+
});
|
72
|
+
it('grading instruction with exam type attribute shows instruction all pages to that exam type, regardless the language', async () => {
|
73
|
+
for (const lang of langs) {
|
74
|
+
const valueHi = await getProseMirrorContent(page, `${ctx.url}/${lang}/hearing-impaired/grading-instructions`);
|
75
|
+
expect(valueHi).toContain('Lokalisaatio: KV only');
|
76
|
+
const valueVi = await getProseMirrorContent(page, `${ctx.url}/${lang}/visually-impaired/grading-instructions`);
|
77
|
+
expect(valueVi).toContain('Lokalisaatio: NV only');
|
78
|
+
}
|
79
|
+
});
|
80
|
+
async function getProseMirrorContent(page, url) {
|
81
|
+
await page.goto(url);
|
82
|
+
await page.waitForSelector('.e-answer-grading-instruction .ProseMirror');
|
83
|
+
return (0, puppeteerUtils_1.getInnerHtml)(page, '.e-answer-grading-instruction .ProseMirror');
|
84
|
+
}
|
85
|
+
});
|
86
|
+
//# sourceMappingURL=testEditableGradingInstructionLocalizations.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"testEditableGradingInstructionLocalizations.js","sourceRoot":"","sources":["../../__tests__/testEditableGradingInstructionLocalizations.ts"],"names":[],"mappings":"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"}
|