@digabi/exam-engine-core 23.1.0-alpha.0 → 23.2.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.
Files changed (47) hide show
  1. package/dist/__tests__/playwright/DNDAnswerContainer.test.js +4 -4
  2. package/dist/__tests__/playwright/DNDAnswerContainer.test.js.map +1 -1
  3. package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.d.ts +1 -0
  4. package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.js +75 -15
  5. package/dist/__tests__/playwright/exam/DNDAnswerContainer.test.js.map +1 -1
  6. package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.d.ts +10 -0
  7. package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.d.ts.map +1 -0
  8. package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.js +21 -0
  9. package/dist/__tests__/playwright/stories/exam/DNDAnswerContainer.story.js.map +1 -0
  10. package/dist/__tests__/playwright/template/index.d.ts +0 -1
  11. package/dist/__tests__/playwright/template/index.d.ts.map +1 -1
  12. package/dist/__tests__/playwright/template/index.js +3 -2
  13. package/dist/__tests__/playwright/template/index.js.map +1 -1
  14. package/dist/__tests__/playwright/utils/ExamComponentWrapper.d.ts +9 -0
  15. package/dist/__tests__/playwright/utils/ExamComponentWrapper.d.ts.map +1 -0
  16. package/dist/__tests__/playwright/utils/ExamComponentWrapper.js +26 -0
  17. package/dist/__tests__/playwright/utils/ExamComponentWrapper.js.map +1 -0
  18. package/dist/__tests__/tsconfig.tsbuildinfo +1 -1
  19. package/dist/components/exam/DNDAnswerOptionDraggable.js +1 -1
  20. package/dist/components/exam/DNDAnswerOptionDraggable.js.map +1 -1
  21. package/dist/components/exam/Exam.d.ts +1 -0
  22. package/dist/components/exam/Exam.d.ts.map +1 -1
  23. package/dist/components/exam/Exam.js +1 -1
  24. package/dist/components/exam/Exam.js.map +1 -1
  25. package/dist/components/results/AudioPlaceholder.d.ts +4 -0
  26. package/dist/components/results/AudioPlaceholder.d.ts.map +1 -0
  27. package/dist/components/results/AudioPlaceholder.js +25 -0
  28. package/dist/components/results/AudioPlaceholder.js.map +1 -0
  29. package/dist/components/results/Results.d.ts.map +1 -1
  30. package/dist/components/results/Results.js +2 -0
  31. package/dist/components/results/Results.js.map +1 -1
  32. package/dist/components/results/internal/QuestionScoresContainer.d.ts.map +1 -1
  33. package/dist/components/results/internal/QuestionScoresContainer.js +2 -3
  34. package/dist/components/results/internal/QuestionScoresContainer.js.map +1 -1
  35. package/dist/components/shared/DNDDroppable.d.ts.map +1 -1
  36. package/dist/components/shared/DNDDroppable.js +1 -1
  37. package/dist/components/shared/DNDDroppable.js.map +1 -1
  38. package/dist/components/shared/DNDTitleAndDroppable.d.ts.map +1 -1
  39. package/dist/components/shared/DNDTitleAndDroppable.js +3 -1
  40. package/dist/components/shared/DNDTitleAndDroppable.js.map +1 -1
  41. package/dist/components/shared/internal/RestrictedAudioPlayer.d.ts +1 -0
  42. package/dist/components/shared/internal/RestrictedAudioPlayer.d.ts.map +1 -1
  43. package/dist/components/shared/internal/RestrictedAudioPlayer.js +1 -1
  44. package/dist/components/shared/internal/RestrictedAudioPlayer.js.map +1 -1
  45. package/dist/main-bundle.js +2 -2
  46. package/dist/main.css +1 -1
  47. package/package.json +3 -3
@@ -55,10 +55,10 @@ async function assertContentMatches(answerContainer, content, mediaType) {
55
55
  }
56
56
  }
57
57
  async function setupAnswerContext(component, answerMediaType) {
58
- const answerContainer = component.locator('.e-dnd-answer-droppable').first();
59
- const answerOptionsLocator = component.locator('.e-dnd-answer-droppable').last();
60
- const firstAnswerLocator = component.locator('.e-dnd-answer-option').nth(0);
61
- const secondAnswerLocator = component.locator('.e-dnd-answer-option').nth(1);
58
+ const answerContainer = component.getByTestId('dnd-droppable').first();
59
+ const answerOptionsLocator = component.getByTestId('dnd-droppable').last();
60
+ const firstAnswerLocator = component.getByTestId('dnd-answer-option').nth(0);
61
+ const secondAnswerLocator = component.getByTestId('dnd-answer-option').nth(1);
62
62
  const firstAnswerContent = answerMediaType === 'text'
63
63
  ? await firstAnswerLocator.textContent()
64
64
  : await firstAnswerLocator.locator('img').getAttribute('src');
@@ -1 +1 @@
1
- {"version":3,"file":"DNDAnswerContainer.test.js","sourceRoot":"","sources":["../../../__tests__/playwright/DNDAnswerContainer.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DNDAnswerContainer.test.js","sourceRoot":"","sources":["../../../__tests__/playwright/DNDAnswerContainer.test.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2BAAiC;AACjC,gDAAuB;AACvB,6EAAgE;AAEhE,iEAAuD;AACvD,yEAA0G;AAC1G,iFAA4E;AAE5E,4BAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACvC,IAAI,YAA6B,CAAA;IAEjC,4BAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QACxB,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,KAAK,MAAM,eAAe,IAAI,CAAC,MAAM,EAAE,OAAO,CAAU,EAAE,CAAC;QACzD,IAAA,4BAAI,EAAC,mDAAmD,eAAe,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACrG,MAAM,SAAS,GAAG,MAAM,KAAK,CAC3B,8BAAC,kDAAuB,IAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,GAAI,CAC1F,CAAA;YACD,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACpB,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;YAExD,MAAM,4BAAI,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;gBACnE,MAAM,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;gBAC9C,MAAM,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAA;YAClF,CAAC,CAAC,CAAA;YAEF,MAAM,4BAAI,CAAC,IAAI,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;gBACxF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;gBACpE,MAAM,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;gBAC9C,MAAM,oBAAoB,CAAC,eAAe,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAA;YACnF,CAAC,CAAC,CAAA;YAEF,MAAM,4BAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;gBAC/D,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;gBAChE,MAAM,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;gBACnD,MAAM,IAAA,8BAAM,EAAC,eAAe,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;YAC7D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,UAAU,iBAAiB;IAC9B,MAAM,QAAQ,GAAG,IAAA,+BAAW,EAAC,WAAW,CAAC,CAAA;IACzC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAA;IAC7G,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,IAAA,kCAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAA,qDAA6B,EAAC,iBAAiB,CAAC,EAAE;QAC3G,oBAAoB,EAAE,IAAI;KAC3B,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,eAAwB,EAAE,OAAe,EAAE,SAA2B;IACxG,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,IAAA,8BAAM,EAAC,eAAe,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAA,8BAAM,EAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,SAAkB,EAAE,eAAiC;IACrF,MAAM,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAA;IACtE,MAAM,oBAAoB,GAAG,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,MAAM,kBAAkB,GAAG,SAAS,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5E,MAAM,mBAAmB,GAAG,SAAS,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAE7E,MAAM,kBAAkB,GACtB,eAAe,KAAK,MAAM;QACxB,CAAC,CAAC,MAAM,kBAAkB,CAAC,WAAW,EAAE;QACxC,CAAC,CAAC,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAEjE,MAAM,mBAAmB,GACvB,eAAe,KAAK,MAAM;QACxB,CAAC,CAAC,MAAM,mBAAmB,CAAC,WAAW,EAAE;QACzC,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAElE,OAAO;QACL,eAAe;QACf,oBAAoB;QACpB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB,EAAE,kBAA4B;QAChD,mBAAmB,EAAE,mBAA6B;KACnD,CAAA;AACH,CAAC"}
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=DNDAnswerContainer.test.d.ts.map
@@ -1,17 +1,77 @@
1
1
  "use strict";
2
- // import { test, expect } from '@playwright/experimental-ct-react'
3
- // import React from 'react'
4
- // import { DNDAnswerContainer } from '../../../src/components/exam/DNDAnswerContainer'
5
- // import { renderChildNodes } from '../../../src/components/exam/Exam'
6
- // test.describe('SectionElement', () => {
7
- // test('renders SectionElement correctly', async ({ mount }) => {
8
- // const element = document.createElement('div')
9
- // const component = await mount(
10
- // <div>
11
- // <DNDAnswerContainer element={element} renderChildNodes={renderChildNodes}></DNDAnswerContainer>
12
- // </div>
13
- // )
14
- // await expect(component).toBeVisible()
15
- // })
16
- // })
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 = __importDefault(require("react"));
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const experimental_ct_react_1 = require("@playwright/experimental-ct-react");
10
+ const exam_engine_exams_1 = require("@digabi/exam-engine-exams");
11
+ const exam_engine_mastering_1 = require("@digabi/exam-engine-mastering");
12
+ const DNDAnswerContainer_story_1 = require("../stories/exam/DNDAnswerContainer.story");
13
+ experimental_ct_react_1.test.describe('DNDAnswerContainer', () => {
14
+ let masteredExam;
15
+ experimental_ct_react_1.test.beforeAll(async () => {
16
+ masteredExam = await setupMasteredExam();
17
+ });
18
+ for (const answerMediaType of ['text', 'image']) {
19
+ (0, experimental_ct_react_1.test)(`Connect - basic drag and drop functionality for ${answerMediaType} answers`, async ({ mount }) => {
20
+ const component = await mount(react_1.default.createElement(DNDAnswerContainer_story_1.DNDAnswerContainerStory, { masteredExam: masteredExam, answerMediaType: answerMediaType }));
21
+ const { answerContainer, answerOptionsLocator, firstAnswerLocator, secondAnswerLocator, firstAnswerContent, secondAnswerContent } = await setupAnswerContext(component, answerMediaType);
22
+ await experimental_ct_react_1.test.step('Drag first answer to answer container', async () => {
23
+ const draggableLocator = firstAnswerLocator.locator('.drag-handle');
24
+ await draggableLocator.dragTo(answerContainer);
25
+ await assertContentMatches(answerContainer, firstAnswerContent, answerMediaType);
26
+ });
27
+ await experimental_ct_react_1.test.step('Replace first answer with second answer in answer container', async () => {
28
+ const draggableLocator = secondAnswerLocator.locator('.drag-handle');
29
+ await draggableLocator.dragTo(answerContainer);
30
+ await assertContentMatches(answerContainer, secondAnswerContent, answerMediaType);
31
+ });
32
+ await experimental_ct_react_1.test.step('Drag second answer back to options', async () => {
33
+ const draggableLocator = answerContainer.locator('.drag-handle');
34
+ await draggableLocator.dragTo(answerOptionsLocator);
35
+ await (0, experimental_ct_react_1.expect)(answerContainer).toContainText('Ei vastausta');
36
+ });
37
+ });
38
+ }
39
+ });
40
+ async function setupMasteredExam() {
41
+ const examPath = (0, exam_engine_exams_1.resolveExam)('SC/SC.xml');
42
+ const resolveAttachment = (filename) => path_1.default.resolve(path_1.default.dirname(examPath), 'attachments', filename);
43
+ const examXml = (0, fs_1.readFileSync)(examPath, 'utf-8');
44
+ const [masteredExam] = await (0, exam_engine_mastering_1.masterExam)(examXml, () => '', (0, exam_engine_mastering_1.getMediaMetadataFromLocalFile)(resolveAttachment), {
45
+ removeCorrectAnswers: true
46
+ });
47
+ return masteredExam;
48
+ }
49
+ async function assertContentMatches(answerContainer, content, mediaType) {
50
+ if (mediaType === 'text') {
51
+ await (0, experimental_ct_react_1.expect)(answerContainer).toContainText(content);
52
+ }
53
+ else if (mediaType === 'image') {
54
+ await (0, experimental_ct_react_1.expect)(answerContainer.locator('img')).toHaveAttribute('src', content);
55
+ }
56
+ }
57
+ async function setupAnswerContext(component, answerMediaType) {
58
+ const answerContainer = component.getByTestId('dnd-droppable').first();
59
+ const answerOptionsLocator = component.getByTestId('dnd-droppable').last();
60
+ const firstAnswerLocator = component.getByTestId('dnd-answer-option').nth(0);
61
+ const secondAnswerLocator = component.getByTestId('dnd-answer-option').nth(1);
62
+ const firstAnswerContent = answerMediaType === 'text'
63
+ ? await firstAnswerLocator.textContent()
64
+ : await firstAnswerLocator.locator('img').getAttribute('src');
65
+ const secondAnswerContent = answerMediaType === 'text'
66
+ ? await secondAnswerLocator.textContent()
67
+ : await secondAnswerLocator.locator('img').getAttribute('src');
68
+ return {
69
+ answerContainer,
70
+ answerOptionsLocator,
71
+ firstAnswerLocator,
72
+ secondAnswerLocator,
73
+ firstAnswerContent: firstAnswerContent,
74
+ secondAnswerContent: secondAnswerContent
75
+ };
76
+ }
17
77
  //# sourceMappingURL=DNDAnswerContainer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DNDAnswerContainer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/DNDAnswerContainer.test.tsx"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,4BAA4B;AAC5B,uFAAuF;AACvF,uEAAuE;AAEvE,0CAA0C;AAC1C,oEAAoE;AACpE,oDAAoD;AACpD,qCAAqC;AACrC,cAAc;AACd,0GAA0G;AAC1G,eAAe;AACf,QAAQ;AACR,4CAA4C;AAC5C,OAAO;AACP,KAAK"}
1
+ {"version":3,"file":"DNDAnswerContainer.test.js","sourceRoot":"","sources":["../../../../__tests__/playwright/exam/DNDAnswerContainer.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { MasteringResult } from '@digabi/exam-engine-mastering';
3
+ export type answerMediaType = 'text' | 'image';
4
+ interface DNDAnswerContainerStoryProps {
5
+ masteredExam: MasteringResult;
6
+ answerMediaType: answerMediaType;
7
+ }
8
+ export declare const DNDAnswerContainerStory: React.FC<DNDAnswerContainerStoryProps>;
9
+ export {};
10
+ //# sourceMappingURL=DNDAnswerContainer.story.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DNDAnswerContainer.story.d.ts","sourceRoot":"","sources":["../../../../../__tests__/playwright/stories/exam/DNDAnswerContainer.story.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAO/D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,CAAA;AAE9C,UAAU,4BAA4B;IACpC,YAAY,EAAE,eAAe,CAAA;IAC7B,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAc1E,CAAA"}
@@ -0,0 +1,21 @@
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
+ exports.DNDAnswerContainerStory = void 0;
7
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
8
+ const react_1 = __importDefault(require("react"));
9
+ const Exam_1 = require("../../../../src/components/exam/Exam");
10
+ const DNDAnswerContainer_1 = require("../../../../src/components/exam/DNDAnswerContainer");
11
+ const ExamComponentWrapper_1 = require("../../utils/ExamComponentWrapper");
12
+ const parseExam_1 = __importDefault(require("../../../../src/parser/parseExam"));
13
+ const dom_utils_1 = require("../../../../src/dom-utils");
14
+ const DNDAnswerContainerStory = ({ masteredExam, answerMediaType }) => {
15
+ const doc = (0, parseExam_1.default)(masteredExam.xml, true);
16
+ const [textAnswers, imageAnswers] = (0, dom_utils_1.queryAll)(doc.documentElement, 'dnd-answer-container');
17
+ return (react_1.default.createElement(ExamComponentWrapper_1.ExamComponentWrapper, { doc: doc, resolveAttachment: (filename) => `/${masteredExam.examCode}/attachments/${filename}` },
18
+ react_1.default.createElement(DNDAnswerContainer_1.DNDAnswerContainer, { element: answerMediaType === 'text' ? textAnswers : imageAnswers, renderChildNodes: Exam_1.renderChildNodes })));
19
+ };
20
+ exports.DNDAnswerContainerStory = DNDAnswerContainerStory;
21
+ //# sourceMappingURL=DNDAnswerContainer.story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DNDAnswerContainer.story.js","sourceRoot":"","sources":["../../../../../__tests__/playwright/stories/exam/DNDAnswerContainer.story.tsx"],"names":[],"mappings":";;;;;;AAAA,4DAA4D;AAC5D,kDAAyB;AAEzB,+DAAuE;AACvE,2FAAuF;AACvF,2EAAuE;AACvE,iFAAwD;AACxD,yDAAoD;AAS7C,MAAM,uBAAuB,GAA2C,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,EAAE;IACnH,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAA;IACzF,OAAO,CACL,8BAAC,2CAAoB,IACnB,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,QAAQ,gBAAgB,QAAQ,EAAE;QAE5F,8BAAC,uCAAkB,IACjB,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAChE,gBAAgB,EAAE,uBAAgB,GACd,CACD,CACxB,CAAA;AACH,CAAC,CAAA;AAdY,QAAA,uBAAuB,2BAcnC"}
@@ -1,2 +1 @@
1
- import '../../../dist/main.css';
2
1
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/template/index.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/template/index.tsx"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("../../../dist/main.css");
2
+ // Note: this file needs to be here to be able to run the tests without errors.
3
+ // Import styles, initialize component theme here.
4
+ // import '../src/common.css';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../__tests__/playwright/template/index.tsx"],"names":[],"mappings":";;AAAA,kCAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../__tests__/playwright/template/index.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAE/E,kDAAkD;AAClD,8BAA8B"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { CommonExamProps } from '../../../src/components/exam/Exam';
3
+ import '../../../src/css/main.less';
4
+ export interface ExamComponentWrapperProps extends CommonExamProps {
5
+ doc: XMLDocument;
6
+ children: React.ReactElement;
7
+ }
8
+ export declare const ExamComponentWrapper: React.ComponentType<any>;
9
+ //# sourceMappingURL=ExamComponentWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExamComponentWrapper.d.ts","sourceRoot":"","sources":["../../../../__tests__/playwright/utils/ExamComponentWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,4BAA4B,CAAA;AAEnC,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAC7B;AAeD,eAAO,MAAM,oBAAoB,0BAA2D,CAAA"}
@@ -0,0 +1,26 @@
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
+ exports.ExamComponentWrapper = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_redux_1 = require("react-redux");
9
+ const react_i18next_1 = require("react-i18next");
10
+ const store_1 = require("../../../src/store");
11
+ const parseExamStructure_1 = require("../../../src/parser/parseExamStructure");
12
+ const useCached_1 = require("../../../src/useCached");
13
+ const examServerApi_1 = require("../../examServerApi");
14
+ const i18n_1 = require("../../../src/i18n");
15
+ const CommonExamContext_1 = require("../../../src/components/context/CommonExamContext");
16
+ const ExamContext_1 = require("../../../src/components/context/ExamContext");
17
+ require("../../../src/css/main.less");
18
+ const WrappedComponent = ({ doc, children }) => {
19
+ const i18n = (0, useCached_1.useCached)(() => (0, i18n_1.initI18n)('fi-FI'));
20
+ const store = (0, useCached_1.useCached)(() => (0, store_1.initializeExamStore)((0, parseExamStructure_1.parseExamStructure)(doc), 'allowed', [], [], examServerApi_1.examServerApi));
21
+ return (react_1.default.createElement(react_redux_1.Provider, { store: store },
22
+ react_1.default.createElement(react_i18next_1.I18nextProvider, { i18n: i18n },
23
+ react_1.default.createElement("div", { className: "e-exam" }, children))));
24
+ };
25
+ exports.ExamComponentWrapper = (0, ExamContext_1.withExamContext)((0, CommonExamContext_1.withCommonExamContext)(WrappedComponent));
26
+ //# sourceMappingURL=ExamComponentWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExamComponentWrapper.js","sourceRoot":"","sources":["../../../../__tests__/playwright/utils/ExamComponentWrapper.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,6CAAsC;AACtC,iDAA+C;AAC/C,8CAAwD;AACxD,+EAA2E;AAC3E,sDAAkD;AAClD,uDAAmD;AACnD,4CAA4C;AAC5C,yFAAyF;AACzF,6EAA6E;AAE7E,sCAAmC;AAOnC,MAAM,gBAAgB,GAAwC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IAClF,MAAM,IAAI,GAAG,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAA,2BAAmB,EAAC,IAAA,uCAAkB,EAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,6BAAa,CAAC,CAAC,CAAA;IAE7G,OAAO,CACL,8BAAC,sBAAQ,IAAC,KAAK,EAAE,KAAK;QACpB,8BAAC,+BAAe,IAAC,IAAI,EAAE,IAAI;YACzB,uCAAK,SAAS,EAAC,QAAQ,IAAE,QAAQ,CAAO,CACxB,CACT,CACZ,CAAA;AACH,CAAC,CAAA;AAEY,QAAA,oBAAoB,GAAG,IAAA,6BAAe,EAAC,IAAA,yCAAqB,EAAC,gBAAgB,CAAC,CAAC,CAAA"}