@pie-element/multiple-choice 13.3.6 → 13.3.7
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/CHANGELOG.md +7 -0
- package/configure/CHANGELOG.md +7 -0
- package/configure/package.json +3 -3
- package/controller/CHANGELOG.md +4 -0
- package/controller/package.json +1 -1
- package/module/configure.js +1 -1
- package/module/controller.js +12 -15
- package/module/element.js +1 -1
- package/module/index.html +1 -1
- package/module/manifest.json +3 -3
- package/module/print.html +1 -1
- package/module/print.js +1 -1
- package/package.json +2 -2
- package/configure/lib/__tests__/root.test.js +0 -279
- package/controller/lib/__tests__/index.test.js +0 -561
- package/controller/lib/__tests__/utils.test.js +0 -8
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/choice-input-test.js +0 -49
- package/lib/__tests__/choice-input.test.js +0 -49
- package/lib/__tests__/index-test.js +0 -206
- package/lib/__tests__/index.test.js +0 -221
- package/lib/__tests__/key-events-test.js +0 -95
- package/lib/__tests__/key-events.test.js +0 -107
- package/lib/__tests__/multiple-choice-test.js +0 -101
- package/lib/__tests__/multiple-choice.test.js +0 -256
- package/lib/__tests__/session-updater-test.js +0 -70
- package/lib/__tests__/session-updater.test.js +0 -70
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _multipleChoice = _interopRequireDefault(require("../multiple-choice"));
|
|
5
|
-
describe('MultipleChoice', () => {
|
|
6
|
-
let instance;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
instance = new _multipleChoice.default();
|
|
9
|
-
instance._model = {
|
|
10
|
-
choices: [{
|
|
11
|
-
value: '1'
|
|
12
|
-
}, {
|
|
13
|
-
value: '2'
|
|
14
|
-
}, {
|
|
15
|
-
value: '3'
|
|
16
|
-
}],
|
|
17
|
-
choiceMode: 'checkbox'
|
|
18
|
-
};
|
|
19
|
-
instance._session = {
|
|
20
|
-
value: []
|
|
21
|
-
};
|
|
22
|
-
instance._onChange = jest.fn();
|
|
23
|
-
});
|
|
24
|
-
describe('handleKeyDown', () => {
|
|
25
|
-
const simulateKeyDown = key => {
|
|
26
|
-
const event = new KeyboardEvent('keydown', {
|
|
27
|
-
key
|
|
28
|
-
});
|
|
29
|
-
instance.handleKeyDown(event);
|
|
30
|
-
};
|
|
31
|
-
it('selects a choice on valid numeric key (checkbox)', () => {
|
|
32
|
-
simulateKeyDown('1');
|
|
33
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
34
|
-
value: '1',
|
|
35
|
-
selected: true
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
it('toggles a choice on valid numeric key (checkbox)', () => {
|
|
39
|
-
instance._session.value = ['1'];
|
|
40
|
-
simulateKeyDown('1');
|
|
41
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
42
|
-
value: '1',
|
|
43
|
-
selected: false
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
it('selects a choice on valid alphabetic key (checkbox)', () => {
|
|
47
|
-
simulateKeyDown('a');
|
|
48
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
49
|
-
value: '1',
|
|
50
|
-
selected: true
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
it('does nothing on invalid key', () => {
|
|
54
|
-
simulateKeyDown('z');
|
|
55
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
56
|
-
});
|
|
57
|
-
it('selects a choice in radio mode', () => {
|
|
58
|
-
instance._model.choiceMode = 'radio';
|
|
59
|
-
simulateKeyDown('2');
|
|
60
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
61
|
-
value: '2',
|
|
62
|
-
selected: true
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
it('replaces the selected choice in radio mode', () => {
|
|
66
|
-
instance._model.choiceMode = 'radio';
|
|
67
|
-
instance._session.value = ['1'];
|
|
68
|
-
simulateKeyDown('3');
|
|
69
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
70
|
-
value: '3',
|
|
71
|
-
selected: true
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
it('does not toggle the same choice in radio mode', () => {
|
|
75
|
-
instance._model.choiceMode = 'radio';
|
|
76
|
-
instance._session.value = ['1'];
|
|
77
|
-
simulateKeyDown('1');
|
|
78
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
79
|
-
value: '1',
|
|
80
|
-
selected: true
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
it('does nothing if model is missing', () => {
|
|
84
|
-
instance._model = null;
|
|
85
|
-
simulateKeyDown('1');
|
|
86
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
87
|
-
});
|
|
88
|
-
it('does nothing if session is missing', () => {
|
|
89
|
-
instance._session = null;
|
|
90
|
-
simulateKeyDown('1');
|
|
91
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbXVsdGlwbGVDaG9pY2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImRlc2NyaWJlIiwiaW5zdGFuY2UiLCJiZWZvcmVFYWNoIiwiTXVsdGlwbGVDaG9pY2UiLCJfbW9kZWwiLCJjaG9pY2VzIiwidmFsdWUiLCJjaG9pY2VNb2RlIiwiX3Nlc3Npb24iLCJfb25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJzaW11bGF0ZUtleURvd24iLCJrZXkiLCJldmVudCIsIktleWJvYXJkRXZlbnQiLCJoYW5kbGVLZXlEb3duIiwiaXQiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInNlbGVjdGVkIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18va2V5LWV2ZW50cy10ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTXVsdGlwbGVDaG9pY2UgZnJvbSAnLi4vbXVsdGlwbGUtY2hvaWNlJztcblxuZGVzY3JpYmUoJ011bHRpcGxlQ2hvaWNlJywgKCkgPT4ge1xuICBsZXQgaW5zdGFuY2U7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgaW5zdGFuY2UgPSBuZXcgTXVsdGlwbGVDaG9pY2UoKTtcbiAgICBpbnN0YW5jZS5fbW9kZWwgPSB7XG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHsgdmFsdWU6ICcxJyB9LFxuICAgICAgICB7IHZhbHVlOiAnMicgfSxcbiAgICAgICAgeyB2YWx1ZTogJzMnIH0sXG4gICAgICBdLFxuICAgICAgY2hvaWNlTW9kZTogJ2NoZWNrYm94JyxcbiAgICB9O1xuICAgIGluc3RhbmNlLl9zZXNzaW9uID0geyB2YWx1ZTogW10gfTtcbiAgICBpbnN0YW5jZS5fb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdoYW5kbGVLZXlEb3duJywgKCkgPT4ge1xuICAgIGNvbnN0IHNpbXVsYXRlS2V5RG93biA9IChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB7IGtleSB9KTtcbiAgICAgIGluc3RhbmNlLmhhbmRsZUtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBpdCgnc2VsZWN0cyBhIGNob2ljZSBvbiB2YWxpZCBudW1lcmljIGtleSAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgc2ltdWxhdGVLZXlEb3duKCcxJyk7XG4gICAgICBleHBlY3QoaW5zdGFuY2UuX29uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9nZ2xlcyBhIGNob2ljZSBvbiB2YWxpZCBudW1lcmljIGtleSAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX3Nlc3Npb24udmFsdWUgPSBbJzEnXTtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMScpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICB2YWx1ZTogJzEnLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzZWxlY3RzIGEgY2hvaWNlIG9uIHZhbGlkIGFscGhhYmV0aWMga2V5IChjaGVja2JveCknLCAoKSA9PiB7XG4gICAgICBzaW11bGF0ZUtleURvd24oJ2EnKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdGhpbmcgb24gaW52YWxpZCBrZXknLCAoKSA9PiB7XG4gICAgICBzaW11bGF0ZUtleURvd24oJ3onKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VsZWN0cyBhIGNob2ljZSBpbiByYWRpbyBtb2RlJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX21vZGVsLmNob2ljZU1vZGUgPSAncmFkaW8nO1xuICAgICAgc2ltdWxhdGVLZXlEb3duKCcyJyk7XG4gICAgICBleHBlY3QoaW5zdGFuY2UuX29uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIHZhbHVlOiAnMicsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVwbGFjZXMgdGhlIHNlbGVjdGVkIGNob2ljZSBpbiByYWRpbyBtb2RlJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX21vZGVsLmNob2ljZU1vZGUgPSAncmFkaW8nO1xuICAgICAgaW5zdGFuY2UuX3Nlc3Npb24udmFsdWUgPSBbJzEnXTtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMycpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICB2YWx1ZTogJzMnLFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRvZ2dsZSB0aGUgc2FtZSBjaG9pY2UgaW4gcmFkaW8gbW9kZScsICgpID0+IHtcbiAgICAgIGluc3RhbmNlLl9tb2RlbC5jaG9pY2VNb2RlID0gJ3JhZGlvJztcbiAgICAgIGluc3RhbmNlLl9zZXNzaW9uLnZhbHVlID0gWycxJ107XG4gICAgICBzaW11bGF0ZUtleURvd24oJzEnKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdGhpbmcgaWYgbW9kZWwgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgIGluc3RhbmNlLl9tb2RlbCA9IG51bGw7XG4gICAgICBzaW11bGF0ZUtleURvd24oJzEnKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3RoaW5nIGlmIHNlc3Npb24gaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgIGluc3RhbmNlLl9zZXNzaW9uID0gbnVsbDtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMScpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNO0VBQy9CLElBQUlDLFFBQVE7RUFFWkMsVUFBVSxDQUFDLE1BQU07SUFDZkQsUUFBUSxHQUFHLElBQUlFLHVCQUFjLENBQUMsQ0FBQztJQUMvQkYsUUFBUSxDQUFDRyxNQUFNLEdBQUc7TUFDaEJDLE9BQU8sRUFBRSxDQUNQO1FBQUVDLEtBQUssRUFBRTtNQUFJLENBQUMsRUFDZDtRQUFFQSxLQUFLLEVBQUU7TUFBSSxDQUFDLEVBQ2Q7UUFBRUEsS0FBSyxFQUFFO01BQUksQ0FBQyxDQUNmO01BQ0RDLFVBQVUsRUFBRTtJQUNkLENBQUM7SUFDRE4sUUFBUSxDQUFDTyxRQUFRLEdBQUc7TUFBRUYsS0FBSyxFQUFFO0lBQUcsQ0FBQztJQUNqQ0wsUUFBUSxDQUFDUSxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7RUFDaEMsQ0FBQyxDQUFDO0VBRUZYLFFBQVEsQ0FBQyxlQUFlLEVBQUUsTUFBTTtJQUM5QixN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
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _index = _interopRequireDefault(require("../index"));
|
|
5
|
-
beforeAll(() => {
|
|
6
|
-
if (!customElements.get('pie-multiple-choice-key-events')) {
|
|
7
|
-
customElements.define('pie-multiple-choice-key-events', _index.default);
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
describe('MultipleChoice', () => {
|
|
11
|
-
let instance;
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
instance = new _index.default();
|
|
14
|
-
instance._model = {
|
|
15
|
-
mode: 'gather',
|
|
16
|
-
choices: [{
|
|
17
|
-
value: '1'
|
|
18
|
-
}, {
|
|
19
|
-
value: '2'
|
|
20
|
-
}, {
|
|
21
|
-
value: '3'
|
|
22
|
-
}],
|
|
23
|
-
choiceMode: 'checkbox'
|
|
24
|
-
};
|
|
25
|
-
instance._session = {
|
|
26
|
-
value: []
|
|
27
|
-
};
|
|
28
|
-
instance._onChange = jest.fn();
|
|
29
|
-
});
|
|
30
|
-
describe('handleKeyDown', () => {
|
|
31
|
-
const simulateKeyDown = key => {
|
|
32
|
-
const event = new KeyboardEvent('keydown', {
|
|
33
|
-
key
|
|
34
|
-
});
|
|
35
|
-
instance.handleKeyDown(event);
|
|
36
|
-
};
|
|
37
|
-
it('selects a choice on valid numeric key (checkbox)', () => {
|
|
38
|
-
simulateKeyDown('1');
|
|
39
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
40
|
-
value: '1',
|
|
41
|
-
selected: true,
|
|
42
|
-
selector: 'Keyboard'
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it('toggles a choice on valid numeric key (checkbox)', () => {
|
|
46
|
-
instance._session.value = ['1'];
|
|
47
|
-
simulateKeyDown('1');
|
|
48
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
49
|
-
value: '1',
|
|
50
|
-
selected: false,
|
|
51
|
-
selector: 'Keyboard'
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
it('selects a choice on valid alphabetic key (checkbox)', () => {
|
|
55
|
-
simulateKeyDown('a');
|
|
56
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
57
|
-
value: '1',
|
|
58
|
-
selected: true,
|
|
59
|
-
selector: 'Keyboard'
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
it('does nothing on invalid key', () => {
|
|
63
|
-
simulateKeyDown('z');
|
|
64
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
65
|
-
});
|
|
66
|
-
it('selects a choice in radio mode', () => {
|
|
67
|
-
instance._model.choiceMode = 'radio';
|
|
68
|
-
simulateKeyDown('2');
|
|
69
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
70
|
-
value: '2',
|
|
71
|
-
selected: true,
|
|
72
|
-
selector: 'Keyboard'
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
it('replaces the selected choice in radio mode', () => {
|
|
76
|
-
instance._model.choiceMode = 'radio';
|
|
77
|
-
instance._session.value = ['1'];
|
|
78
|
-
simulateKeyDown('3');
|
|
79
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
80
|
-
value: '3',
|
|
81
|
-
selected: true,
|
|
82
|
-
selector: 'Keyboard'
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
it('does not toggle the same choice in radio mode', () => {
|
|
86
|
-
instance._model.choiceMode = 'radio';
|
|
87
|
-
instance._session.value = ['1'];
|
|
88
|
-
simulateKeyDown('1');
|
|
89
|
-
expect(instance._onChange).toHaveBeenCalledWith({
|
|
90
|
-
value: '1',
|
|
91
|
-
selected: true,
|
|
92
|
-
selector: 'Keyboard'
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
it('does nothing if model is missing', () => {
|
|
96
|
-
instance._model = null;
|
|
97
|
-
simulateKeyDown('1');
|
|
98
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
99
|
-
});
|
|
100
|
-
it('does nothing if session is missing', () => {
|
|
101
|
-
instance._session = null;
|
|
102
|
-
simulateKeyDown('1');
|
|
103
|
-
expect(instance._onChange).not.toHaveBeenCalled();
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImJlZm9yZUFsbCIsImN1c3RvbUVsZW1lbnRzIiwiZ2V0IiwiZGVmaW5lIiwiTXVsdGlwbGVDaG9pY2UiLCJkZXNjcmliZSIsImluc3RhbmNlIiwiYmVmb3JlRWFjaCIsIl9tb2RlbCIsIm1vZGUiLCJjaG9pY2VzIiwidmFsdWUiLCJjaG9pY2VNb2RlIiwiX3Nlc3Npb24iLCJfb25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJzaW11bGF0ZUtleURvd24iLCJrZXkiLCJldmVudCIsIktleWJvYXJkRXZlbnQiLCJoYW5kbGVLZXlEb3duIiwiaXQiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInNlbGVjdGVkIiwic2VsZWN0b3IiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9rZXktZXZlbnRzLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNdWx0aXBsZUNob2ljZSBmcm9tICcuLi9pbmRleCc7XG5cbmJlZm9yZUFsbCgoKSA9PiB7XG4gIGlmICghY3VzdG9tRWxlbWVudHMuZ2V0KCdwaWUtbXVsdGlwbGUtY2hvaWNlLWtleS1ldmVudHMnKSkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgncGllLW11bHRpcGxlLWNob2ljZS1rZXktZXZlbnRzJywgTXVsdGlwbGVDaG9pY2UpO1xuICB9XG59KTtcblxuZGVzY3JpYmUoJ011bHRpcGxlQ2hvaWNlJywgKCkgPT4ge1xuICBsZXQgaW5zdGFuY2U7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgaW5zdGFuY2UgPSBuZXcgTXVsdGlwbGVDaG9pY2UoKTtcbiAgICBpbnN0YW5jZS5fbW9kZWwgPSB7XG4gICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgeyB2YWx1ZTogJzEnIH0sXG4gICAgICAgIHsgdmFsdWU6ICcyJyB9LFxuICAgICAgICB7IHZhbHVlOiAnMycgfSxcbiAgICAgIF0sXG4gICAgICBjaG9pY2VNb2RlOiAnY2hlY2tib3gnLFxuICAgIH07XG4gICAgaW5zdGFuY2UuX3Nlc3Npb24gPSB7IHZhbHVlOiBbXSB9O1xuICAgIGluc3RhbmNlLl9vbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2hhbmRsZUtleURvd24nLCAoKSA9PiB7XG4gICAgY29uc3Qgc2ltdWxhdGVLZXlEb3duID0gKGtleSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBuZXcgS2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHsga2V5IH0pO1xuICAgICAgaW5zdGFuY2UuaGFuZGxlS2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGl0KCdzZWxlY3RzIGEgY2hvaWNlIG9uIHZhbGlkIG51bWVyaWMga2V5IChjaGVja2JveCknLCAoKSA9PiB7XG4gICAgICBzaW11bGF0ZUtleURvd24oJzEnKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgIHNlbGVjdG9yOiAnS2V5Ym9hcmQnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9nZ2xlcyBhIGNob2ljZSBvbiB2YWxpZCBudW1lcmljIGtleSAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX3Nlc3Npb24udmFsdWUgPSBbJzEnXTtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMScpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICB2YWx1ZTogJzEnLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNlbGVjdG9yOiAnS2V5Ym9hcmQnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VsZWN0cyBhIGNob2ljZSBvbiB2YWxpZCBhbHBoYWJldGljIGtleSAoY2hlY2tib3gpJywgKCkgPT4ge1xuICAgICAgc2ltdWxhdGVLZXlEb3duKCdhJyk7XG4gICAgICBleHBlY3QoaW5zdGFuY2UuX29uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICBzZWxlY3RvcjogJ0tleWJvYXJkJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90aGluZyBvbiBpbnZhbGlkIGtleScsICgpID0+IHtcbiAgICAgIHNpbXVsYXRlS2V5RG93bigneicpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZWxlY3RzIGEgY2hvaWNlIGluIHJhZGlvIG1vZGUnLCAoKSA9PiB7XG4gICAgICBpbnN0YW5jZS5fbW9kZWwuY2hvaWNlTW9kZSA9ICdyYWRpbyc7XG4gICAgICBzaW11bGF0ZUtleURvd24oJzInKTtcbiAgICAgIGV4cGVjdChpbnN0YW5jZS5fb25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHtcbiAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgICAgIHNlbGVjdG9yOiAnS2V5Ym9hcmQnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVwbGFjZXMgdGhlIHNlbGVjdGVkIGNob2ljZSBpbiByYWRpbyBtb2RlJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX21vZGVsLmNob2ljZU1vZGUgPSAncmFkaW8nO1xuICAgICAgaW5zdGFuY2UuX3Nlc3Npb24udmFsdWUgPSBbJzEnXTtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMycpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoe1xuICAgICAgICB2YWx1ZTogJzMnLFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgc2VsZWN0b3I6ICdLZXlib2FyZCcsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0b2dnbGUgdGhlIHNhbWUgY2hvaWNlIGluIHJhZGlvIG1vZGUnLCAoKSA9PiB7XG4gICAgICBpbnN0YW5jZS5fbW9kZWwuY2hvaWNlTW9kZSA9ICdyYWRpbyc7XG4gICAgICBpbnN0YW5jZS5fc2Vzc2lvbi52YWx1ZSA9IFsnMSddO1xuICAgICAgc2ltdWxhdGVLZXlEb3duKCcxJyk7XG4gICAgICBleHBlY3QoaW5zdGFuY2UuX29uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7XG4gICAgICAgIHZhbHVlOiAnMScsXG4gICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICBzZWxlY3RvcjogJ0tleWJvYXJkJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90aGluZyBpZiBtb2RlbCBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX21vZGVsID0gbnVsbDtcbiAgICAgIHNpbXVsYXRlS2V5RG93bignMScpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLl9vbkNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdGhpbmcgaWYgc2Vzc2lvbiBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgaW5zdGFuY2UuX3Nlc3Npb24gPSBudWxsO1xuICAgICAgc2ltdWxhdGVLZXlEb3duKCcxJyk7XG4gICAgICBleHBlY3QoaW5zdGFuY2UuX29uQ2hhbmdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQUMsU0FBUyxDQUFD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
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _multipleChoice = require("../multiple-choice");
|
|
7
|
-
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
8
|
-
// Mock the CorrectAnswerToggle component
|
|
9
|
-
jest.mock('@pie-lib/correct-answer-toggle', () => {
|
|
10
|
-
const MockToggle = props => /*#__PURE__*/_react.default.createElement("div", {
|
|
11
|
-
"data-testid": "correct-answer-toggle",
|
|
12
|
-
"data-show": props.show,
|
|
13
|
-
"data-toggled": props.toggled
|
|
14
|
-
}, "Mock Toggle");
|
|
15
|
-
MockToggle.displayName = 'CorrectAnswerToggle';
|
|
16
|
-
return MockToggle;
|
|
17
|
-
});
|
|
18
|
-
describe('Choice', () => {
|
|
19
|
-
let onChoiceChanged;
|
|
20
|
-
beforeEach(() => {
|
|
21
|
-
onChoiceChanged = jest.fn();
|
|
22
|
-
});
|
|
23
|
-
const renderChoice = (extras = {}) => {
|
|
24
|
-
const props = {
|
|
25
|
-
classes: {},
|
|
26
|
-
choice: {},
|
|
27
|
-
index: 0,
|
|
28
|
-
choicesLength: 1,
|
|
29
|
-
showCorrect: false,
|
|
30
|
-
isEvaluateMode: false,
|
|
31
|
-
choiceMode: 'radio',
|
|
32
|
-
disabled: true,
|
|
33
|
-
onChoiceChanged,
|
|
34
|
-
checked: true,
|
|
35
|
-
correctness: 'correct',
|
|
36
|
-
displayKey: '0',
|
|
37
|
-
choicesLayout: 'grid',
|
|
38
|
-
gridColumns: 2,
|
|
39
|
-
...extras
|
|
40
|
-
};
|
|
41
|
-
return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.Choice, props));
|
|
42
|
-
};
|
|
43
|
-
describe('logic', () => {
|
|
44
|
-
it('does not call onChoiceChanged if disabled is true', () => {
|
|
45
|
-
const {
|
|
46
|
-
container
|
|
47
|
-
} = renderChoice({
|
|
48
|
-
disabled: true
|
|
49
|
-
});
|
|
50
|
-
const input = container.querySelector('input');
|
|
51
|
-
if (input) {
|
|
52
|
-
input.click();
|
|
53
|
-
}
|
|
54
|
-
// When disabled, onChange should not be called
|
|
55
|
-
expect(onChoiceChanged).not.toHaveBeenCalled();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe('CorespringChoice', () => {
|
|
60
|
-
const mkWrapper = (opts = {}) => {
|
|
61
|
-
const defaultProps = {
|
|
62
|
-
classes: {},
|
|
63
|
-
choices: [],
|
|
64
|
-
disabled: false,
|
|
65
|
-
keyMode: 'letters',
|
|
66
|
-
onChoiceChanged: jest.fn(),
|
|
67
|
-
mode: 'gather',
|
|
68
|
-
...opts
|
|
69
|
-
};
|
|
70
|
-
return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps));
|
|
71
|
-
};
|
|
72
|
-
describe('Toggle', () => {
|
|
73
|
-
it('toggle is rendered', () => {
|
|
74
|
-
mkWrapper();
|
|
75
|
-
expect(_react2.screen.getByTestId('correct-answer-toggle')).toBeInTheDocument();
|
|
76
|
-
});
|
|
77
|
-
it('toggle show is set to false by default', () => {
|
|
78
|
-
mkWrapper();
|
|
79
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
80
|
-
expect(toggle).toHaveAttribute('data-show', 'false');
|
|
81
|
-
});
|
|
82
|
-
it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', () => {
|
|
83
|
-
mkWrapper({
|
|
84
|
-
mode: 'evaluate',
|
|
85
|
-
responseCorrect: false,
|
|
86
|
-
feedbackEnabled: true
|
|
87
|
-
});
|
|
88
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
89
|
-
expect(toggle).toHaveAttribute('data-show', 'true');
|
|
90
|
-
});
|
|
91
|
-
it('hides toggle if mode is evaluate and responseCorrect is true', () => {
|
|
92
|
-
mkWrapper({
|
|
93
|
-
mode: 'evaluate',
|
|
94
|
-
responseCorrect: true
|
|
95
|
-
});
|
|
96
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
97
|
-
expect(toggle).toHaveAttribute('data-show', 'false');
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbXVsdGlwbGVDaG9pY2UiLCJfY29ycmVjdEFuc3dlclRvZ2dsZSIsImplc3QiLCJtb2NrIiwiTW9ja1RvZ2dsZSIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJzaG93IiwidG9nZ2xlZCIsImRpc3BsYXlOYW1lIiwiZGVzY3JpYmUiLCJvbkNob2ljZUNoYW5nZWQiLCJiZWZvcmVFYWNoIiwiZm4iLCJyZW5kZXJDaG9pY2UiLCJleHRyYXMiLCJjbGFzc2VzIiwiY2hvaWNlIiwiaW5kZXgiLCJjaG9pY2VzTGVuZ3RoIiwic2hvd0NvcnJlY3QiLCJpc0V2YWx1YXRlTW9kZSIsImNob2ljZU1vZGUiLCJkaXNhYmxlZCIsImNoZWNrZWQiLCJjb3JyZWN0bmVzcyIsImRpc3BsYXlLZXkiLCJjaG9pY2VzTGF5b3V0IiwiZ3JpZENvbHVtbnMiLCJyZW5kZXIiLCJDaG9pY2UiLCJpdCIsImNvbnRhaW5lciIsImlucHV0IiwicXVlcnlTZWxlY3RvciIsImNsaWNrIiwiZXhwZWN0Iiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsIm1rV3JhcHBlciIsIm9wdHMiLCJkZWZhdWx0UHJvcHMiLCJjaG9pY2VzIiwia2V5TW9kZSIsIm1vZGUiLCJNdWx0aXBsZUNob2ljZSIsInNjcmVlbiIsImdldEJ5VGVzdElkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJ0b2dnbGUiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJyZXNwb25zZUNvcnJlY3QiLCJmZWVkYmFja0VuYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL211bHRpcGxlLWNob2ljZS10ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IE11bHRpcGxlQ2hvaWNlLCBDaG9pY2UgfSBmcm9tICcuLi9tdWx0aXBsZS1jaG9pY2UnO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcblxuLy8gTW9jayB0aGUgQ29ycmVjdEFuc3dlclRvZ2dsZSBjb21wb25lbnRcbmplc3QubW9jaygnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJywgKCkgPT4ge1xuICBjb25zdCBNb2NrVG9nZ2xlID0gKHByb3BzKSA9PiAoXG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImNvcnJlY3QtYW5zd2VyLXRvZ2dsZVwiIGRhdGEtc2hvdz17cHJvcHMuc2hvd30gZGF0YS10b2dnbGVkPXtwcm9wcy50b2dnbGVkfT5cbiAgICAgIE1vY2sgVG9nZ2xlXG4gICAgPC9kaXY+XG4gICk7XG4gIE1vY2tUb2dnbGUuZGlzcGxheU5hbWUgPSAnQ29ycmVjdEFuc3dlclRvZ2dsZSc7XG4gIHJldHVybiBNb2NrVG9nZ2xlO1xufSk7XG5cbmRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCBvbkNob2ljZUNoYW5nZWQ7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuICB9KTtcblxuICBjb25zdCByZW5kZXJDaG9pY2UgPSAoZXh0cmFzID0ge30pID0+IHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2hvaWNlOiB7fSxcbiAgICAgIGluZGV4OiAwLFxuICAgICAgY2hvaWNlc0xlbmd0aDogMSxcbiAgICAgIHNob3dDb3JyZWN0OiBmYWxzZSxcbiAgICAgIGlzRXZhbHVhdGVNb2RlOiBmYWxzZSxcbiAgICAgIGNob2ljZU1vZGU6ICdyYWRpbycsXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgIGNoZWNrZWQ6IHRydWUsXG4gICAgICBjb3JyZWN0bmVzczogJ2NvcnJlY3QnLFxuICAgICAgZGlzcGxheUtleTogJzAnLFxuICAgICAgY2hvaWNlc0xheW91dDogJ2dyaWQnLFxuICAgICAgZ3JpZENvbHVtbnM6IDIsXG4gICAgICAuLi5leHRyYXMsXG4gICAgfTtcbiAgICByZXR1cm4gcmVuZGVyKDxDaG9pY2Ugey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGl0KCdkb2VzIG5vdCBjYWxsIG9uQ2hvaWNlQ2hhbmdlZCBpZiBkaXNhYmxlZCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNob2ljZSh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICBpbnB1dC5jbGljaygpO1xuICAgICAgfVxuICAgICAgLy8gV2hlbiBkaXNhYmxlZCwgb25DaGFuZ2Ugc2hvdWxkIG5vdCBiZSBjYWxsZWRcbiAgICAgIGV4cGVjdChvbkNob2ljZUNoYW5nZWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdDb3Jlc3ByaW5nQ2hvaWNlJywgKCkgPT4ge1xuICBjb25zdCBta1dyYXBwZXIgPSAob3B0cyA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBjaG9pY2VzOiBbXSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgIGtleU1vZGU6ICdsZXR0ZXJzJyxcbiAgICAgIG9uQ2hvaWNlQ2hhbmdlZDogamVzdC5mbigpLFxuICAgICAgbW9kZTogJ2dhdGhlcicsXG4gICAgICAuLi5vcHRzLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVuZGVyKDxNdWx0aXBsZUNob2ljZSB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ1RvZ2dsZScsICgpID0+IHtcbiAgICBpdCgndG9nZ2xlIGlzIHJlbmRlcmVkJywgKCkgPT4ge1xuICAgICAgbWtXcmFwcGVyKCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdjb3JyZWN0LWFuc3dlci10b2dnbGUnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b2dnbGUgc2hvdyBpcyBzZXQgdG8gZmFsc2UgYnkgZGVmYXVsdCcsICgpID0+IHtcbiAgICAgIG1rV3JhcHBlcigpO1xuICAgICAgY29uc3QgdG9nZ2xlID0gc2NyZWVuLmdldEJ5VGVzdElkKCdjb3JyZWN0LWFuc3dlci10b2dnbGUnKTtcbiAgICAgIGV4cGVjdCh0b2dnbGUpLnRvSGF2ZUF0dHJpYnV0ZSgnZGF0YS1zaG93JywgJ2ZhbHNlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvd3MgdG9nZ2xlIGlmIG1vZGUgaXMgZXZhbHVhdGUsIGZlZWRiYWNrIGlzIGVuYWJsZWQgYW5kIHJlc3BvbnNlQ29ycmVjdCBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScsIHJlc3BvbnNlQ29ycmVjdDogZmFsc2UsIGZlZWRiYWNrRW5hYmxlZDogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHRvZ2dsZSA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnY29ycmVjdC1hbnN3ZXItdG9nZ2xlJyk7XG4gICAgICBleHBlY3QodG9nZ2xlKS50b0hhdmVBdHRyaWJ1dGUoJ2RhdGEtc2hvdycsICd0cnVlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGlkZXMgdG9nZ2xlIGlmIG1vZGUgaXMgZXZhbHVhdGUgYW5kIHJlc3BvbnNlQ29ycmVjdCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJywgcmVzcG9uc2VDb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgY29uc3QgdG9nZ2xlID0gc2NyZWVuLmdldEJ5VGVzdElkKCdjb3JyZWN0LWFuc3dlci10b2dnbGUnKTtcbiAgICAgIGV4cGVjdCh0b2dnbGUpLnRvSGF2ZUF0dHJpYnV0ZSgnZGF0YS1zaG93JywgJ2ZhbHNlJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQTtBQUNBSSxJQUFJLENBQUNDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxNQUFNO0VBQ2hELE1BQU1DLFVBQVUsR0FBSUMsS0FBSyxpQkFDdkJULE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBO0lBQUssZUFBWSx1QkFBdUI7SUFBQyxhQUFXRixLQUFLLENBQUNHLElBQUs7SUFBQyxnQkFBY0gsS0FBSyxDQUFDSTtFQUFRLEdBQUMsYUFFeEYsQ0FDTjtFQUNETCxVQUFVLENBQUNNLFdBQVcsR0FBRyxxQkFBcUI7RUFDOUMsT0FBT04sVUFBVTtBQUNuQixDQUFDLENBQUM7QUFFRk8sUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNO0VBQ3ZCLElBQUlDLGVBQWU7RUFFbkJDLFVBQVUsQ0FBQyxNQUFNO0lBQ2ZELGVBQWUsR0FBR1YsSUFBSSxDQUFDWSxFQUFFLENBQUMsQ0FBQztFQUM3QixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSztJQUNwQyxNQUFNWCxLQUFLLEdBQUc7TUFDWlksT0FBTyxFQUFFLENBQUMsQ0FBQztNQUNYQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO01BQ1ZDLEtBQUssRUFBRSxDQUFDO01BQ1JDLGFBQWEsRUFBRSxDQUFDO01BQ2hCQyxXQUFXLEVBQUUsS0FBSztNQUNsQkMsY0FBYyxFQUFFLEtBQUs7TUFDckJDLFVBQVUsRUFBRSxPQUFPO01BQ25CQyxRQUFRLEVBQUUsSUFBSTtNQUNkWixlQUFlO01BQ2ZhLE9BQU8sRUFBRSxJQUFJO01BQ2JDLFdBQVcsRUFBRSxTQUFTO01BQ3RCQyxVQUFVLEVBQUUsR0FBRztNQUNmQyxhQUFhLEVBQUUsTUFBTTtNQUNyQkMsV0FBVyxFQUFFLENBQUM7TUFDZCxHQUFHYjtJQUNMLENBQUM7SUFDRCxPQUFPLElBQUFjLGNBQU0sZUFBQ2xDLE1BQUEsQ0FBQVUsT0FBQSxDQUFBQyxhQUFBLENBQUNQLGVBQUEsQ0FBQStCLE1BQU0sRUFBSzFCLEtBQVEsQ0FBQyxDQUFDO0VBQ3RDLENBQUM7RUFFRE0sUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNO0lBQ3RCcUIsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLE1BQU07TUFDNUQsTUFBTTtRQUFFQztNQUFVLENBQUMsR0FBR2xCLFlBQVksQ0FBQztRQUFFUyxRQUFRLEVBQUU7TUFBSyxDQUFDLENBQUM7TUFDdEQsTUFBTVUsS0FBSyxHQUFHRCxTQUFTLENBQUNFLGFBQWEsQ0FBQyxPQUFPLENBQUM7TUFDOUMsSUFBSUQsS0FBSyxFQUFFO1FBQ1RBLEtBQUssQ0FBQ0UsS0FBSyxDQUFDLENBQUM7TUFDZjtNQUNBO01BQ0FDLE1BQU0sQ0FBQ3pCLGVBQWUsQ0FBQyxDQUFDMEIsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGNUIsUUFBUSxDQUFDLGtCQUFrQixFQUFFLE1BQU07RUFDakMsTUFBTTZCLFNBQVMsR0FBR0EsQ0FBQ0MsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLO0lBQy9CLE1BQU1DLFlBQVksR0FBRztNQUNuQnpCLE9BQU8sRUFBRSxDQUFDLENBQUM7TUFDWDBCLE9BQU8sRUFBRSxFQUFFO01BQ1huQixRQUFRLEVBQUUsS0FBSztNQUNmb0IsT0FBTyxFQUFFLFNBQVM7TUFDbEJoQyxlQUFlLEVBQUVWLElBQUksQ0FBQ1ksRUFBRSxDQUFDLENBQUM7TUFDMUIrQixJQUFJLEVBQUUsUUFBUTtNQUNkLEdBQUdKO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBQVgsY0FBTSxlQUFDbEMsTUFBQSxDQUFBVSxPQUFBLENBQUFDLGFBQUEsQ0FBQ1AsZUFBQSxDQUFBOEMsY0FBYyxFQUFLSixZQUFlLENBQUMsQ0FBQztFQUNyRCxDQUFDO0VBRUQvQixRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU07SUFDdkJxQixFQUFFLENBQUMsb0JBQW9CLEVBQUUsTUFBTTtNQUM3QlEsU0FBUyxDQUFDLENBQUM7TUFDWEgsTUFBTSxDQUFDVSxjQUFNLENBQUNDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDekUsQ0FBQyxDQUFDO0lBRUZqQixFQUFFLENBQUMsd0NBQXdDLEVBQUUsTUFBTTtNQUNqRFEsU0FBUyxDQUFDLENBQUM7TUFDWCxNQUFNVSxNQUFNLEdBQUdILGNBQU0sQ0FBQ0MsV0FBVyxDQUFDLHVCQUF1QixDQUFDO01BQzFEWCxNQUFNLENBQUNhLE1BQU0sQ0FBQyxDQUFDQyxlQUFlLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQztJQUN0RCxDQUFDLENBQUM7SUFFRm5CLEVBQUUsQ0FBQyxvRkFBb0YsRUFBRSxNQUFNO01BQzdGUSxTQUFTLENBQUM7UUFBRUssSUFBSSxFQUFFLFVBQVU7UUFBRU8sZUFBZSxFQUFFLEtBQUs7UUFBRUMsZUFBZSxFQUFFO01BQUssQ0FBQyxDQUFDO01BQzlFLE1BQU1ILE1BQU0sR0FBR0gsY0FBTSxDQUFDQyxXQUFXLENBQUMsdUJBQXVCLENBQUM7TUFDMURYLE1BQU0sQ0FBQ2EsTUFBTSxDQUFDLENBQUNDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGbkIsRUFBRSxDQUFDLDhEQUE4RCxFQUFFLE1BQU07TUFDdkVRLFNBQVMsQ0FBQztRQUFFSyxJQUFJLEVBQUUsVUFBVTtRQUFFTyxlQUFlLEVBQUU7TUFBSyxDQUFDLENBQUM7TUFDdEQsTUFBTUYsTUFBTSxHQUFHSCxjQUFNLENBQUNDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQztNQUMxRFgsTUFBTSxDQUFDYSxNQUFNLENBQUMsQ0FBQ0MsZUFBZSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUM7SUFDdEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _react = _interopRequireDefault(require("react"));
|
|
5
|
-
var _react2 = require("@testing-library/react");
|
|
6
|
-
var _multipleChoice = require("../multiple-choice");
|
|
7
|
-
// Mock the CorrectAnswerToggle component
|
|
8
|
-
jest.mock('@pie-lib/correct-answer-toggle', () => {
|
|
9
|
-
const MockToggle = props => /*#__PURE__*/_react.default.createElement("div", {
|
|
10
|
-
"data-testid": "correct-answer-toggle",
|
|
11
|
-
"data-show": props.show,
|
|
12
|
-
"data-toggled": props.toggled
|
|
13
|
-
}, "Mock Toggle");
|
|
14
|
-
MockToggle.displayName = 'CorrectAnswerToggle';
|
|
15
|
-
return MockToggle;
|
|
16
|
-
});
|
|
17
|
-
jest.mock('@pie-lib/render-ui', () => ({
|
|
18
|
-
color: {
|
|
19
|
-
text: () => '#000',
|
|
20
|
-
background: () => '#fff',
|
|
21
|
-
incorrect: () => '#f00',
|
|
22
|
-
correct: () => '#0f0',
|
|
23
|
-
primaryLight: () => '#eee',
|
|
24
|
-
primary: () => '#333'
|
|
25
|
-
},
|
|
26
|
-
Collapsible: ({
|
|
27
|
-
children
|
|
28
|
-
}) => /*#__PURE__*/_react.default.createElement("div", null, children),
|
|
29
|
-
PreviewPrompt: ({
|
|
30
|
-
prompt,
|
|
31
|
-
tagName: Tag = 'div'
|
|
32
|
-
}) => /*#__PURE__*/_react.default.createElement(Tag, null, prompt),
|
|
33
|
-
transformDataHeadings: html => html
|
|
34
|
-
}));
|
|
35
|
-
jest.mock('@pie-lib/translator', () => ({
|
|
36
|
-
__esModule: true,
|
|
37
|
-
default: {
|
|
38
|
-
translator: {
|
|
39
|
-
t: key => key
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}));
|
|
43
|
-
|
|
44
|
-
// Mock Choice with separate select/deselect buttons so fireEvent.click
|
|
45
|
-
// reliably triggers handleChange with the correct checked value.
|
|
46
|
-
jest.mock('../choice', () => {
|
|
47
|
-
const React = require('react');
|
|
48
|
-
return {
|
|
49
|
-
__esModule: true,
|
|
50
|
-
default: ({
|
|
51
|
-
choice,
|
|
52
|
-
onChoiceChanged
|
|
53
|
-
}) => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
|
|
54
|
-
"data-testid": `select-${choice.value}`,
|
|
55
|
-
onClick: () => onChoiceChanged({
|
|
56
|
-
target: {
|
|
57
|
-
value: choice.value,
|
|
58
|
-
checked: true
|
|
59
|
-
}
|
|
60
|
-
})
|
|
61
|
-
}), /*#__PURE__*/React.createElement("button", {
|
|
62
|
-
"data-testid": `deselect-${choice.value}`,
|
|
63
|
-
onClick: () => onChoiceChanged({
|
|
64
|
-
target: {
|
|
65
|
-
value: choice.value,
|
|
66
|
-
checked: false
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
}))
|
|
70
|
-
};
|
|
71
|
-
});
|
|
72
|
-
describe('CorespringChoice', () => {
|
|
73
|
-
const mkWrapper = (opts = {}) => {
|
|
74
|
-
const defaultProps = {
|
|
75
|
-
classes: {},
|
|
76
|
-
choices: [],
|
|
77
|
-
disabled: false,
|
|
78
|
-
keyMode: 'letters',
|
|
79
|
-
onChoiceChanged: jest.fn(),
|
|
80
|
-
mode: 'gather',
|
|
81
|
-
...opts
|
|
82
|
-
};
|
|
83
|
-
return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps));
|
|
84
|
-
};
|
|
85
|
-
describe('Toggle', () => {
|
|
86
|
-
it('toggle is rendered', () => {
|
|
87
|
-
mkWrapper();
|
|
88
|
-
expect(_react2.screen.getByTestId('correct-answer-toggle')).toBeInTheDocument();
|
|
89
|
-
});
|
|
90
|
-
it('toggle show is set to false by default', () => {
|
|
91
|
-
mkWrapper();
|
|
92
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
93
|
-
expect(toggle).toHaveAttribute('data-show', 'false');
|
|
94
|
-
});
|
|
95
|
-
it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', () => {
|
|
96
|
-
mkWrapper({
|
|
97
|
-
mode: 'evaluate',
|
|
98
|
-
responseCorrect: false,
|
|
99
|
-
feedbackEnabled: true
|
|
100
|
-
});
|
|
101
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
102
|
-
expect(toggle).toHaveAttribute('data-show', 'true');
|
|
103
|
-
});
|
|
104
|
-
it('hides toggle if mode is evaluate and responseCorrect is true', () => {
|
|
105
|
-
mkWrapper({
|
|
106
|
-
mode: 'evaluate',
|
|
107
|
-
responseCorrect: true
|
|
108
|
-
});
|
|
109
|
-
const toggle = _react2.screen.getByTestId('correct-answer-toggle');
|
|
110
|
-
expect(toggle).toHaveAttribute('data-show', 'false');
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
describe('MultipleChoice handleChange', () => {
|
|
115
|
-
const makeChoice = value => ({
|
|
116
|
-
value,
|
|
117
|
-
label: value
|
|
118
|
-
});
|
|
119
|
-
const defaultProps = (overrides = {}) => ({
|
|
120
|
-
mode: 'gather',
|
|
121
|
-
choiceMode: 'radio',
|
|
122
|
-
choices: [makeChoice('A'), makeChoice('B'), makeChoice('C')],
|
|
123
|
-
session: {
|
|
124
|
-
value: []
|
|
125
|
-
},
|
|
126
|
-
disabled: false,
|
|
127
|
-
onChoiceChanged: jest.fn(),
|
|
128
|
-
...overrides
|
|
129
|
-
});
|
|
130
|
-
describe('maxSelections: null', () => {
|
|
131
|
-
it('allows selecting a first answer', () => {
|
|
132
|
-
const onChoiceChanged = jest.fn();
|
|
133
|
-
const {
|
|
134
|
-
getByTestId
|
|
135
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
136
|
-
maxSelections: null,
|
|
137
|
-
onChoiceChanged
|
|
138
|
-
})));
|
|
139
|
-
_react2.fireEvent.click(getByTestId('select-A'));
|
|
140
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
141
|
-
value: 'A',
|
|
142
|
-
selected: true,
|
|
143
|
-
selector: 'Mouse'
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
it('allows switching to a different answer after one is already selected', () => {
|
|
147
|
-
const onChoiceChanged = jest.fn();
|
|
148
|
-
const {
|
|
149
|
-
getByTestId
|
|
150
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
151
|
-
maxSelections: null,
|
|
152
|
-
session: {
|
|
153
|
-
value: ['A']
|
|
154
|
-
},
|
|
155
|
-
onChoiceChanged
|
|
156
|
-
})));
|
|
157
|
-
_react2.fireEvent.click(getByTestId('select-B'));
|
|
158
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
159
|
-
value: 'B',
|
|
160
|
-
selected: true,
|
|
161
|
-
selector: 'Mouse'
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
describe('maxSelections: 1, choiceMode: radio', () => {
|
|
166
|
-
it('allows selecting a first answer', () => {
|
|
167
|
-
const onChoiceChanged = jest.fn();
|
|
168
|
-
const {
|
|
169
|
-
getByTestId
|
|
170
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
171
|
-
maxSelections: 1,
|
|
172
|
-
onChoiceChanged
|
|
173
|
-
})));
|
|
174
|
-
_react2.fireEvent.click(getByTestId('select-A'));
|
|
175
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
176
|
-
value: 'A',
|
|
177
|
-
selected: true,
|
|
178
|
-
selector: 'Mouse'
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
it('allows switching to a different answer after one is already selected', () => {
|
|
182
|
-
const onChoiceChanged = jest.fn();
|
|
183
|
-
const {
|
|
184
|
-
getByTestId
|
|
185
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
186
|
-
maxSelections: 1,
|
|
187
|
-
session: {
|
|
188
|
-
value: ['A']
|
|
189
|
-
},
|
|
190
|
-
onChoiceChanged
|
|
191
|
-
})));
|
|
192
|
-
_react2.fireEvent.click(getByTestId('select-B'));
|
|
193
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
194
|
-
value: 'B',
|
|
195
|
-
selected: true,
|
|
196
|
-
selector: 'Mouse'
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
describe('maxSelections: 2, choiceMode: checkbox', () => {
|
|
201
|
-
it('allows selecting up to the limit', () => {
|
|
202
|
-
const onChoiceChanged = jest.fn();
|
|
203
|
-
const {
|
|
204
|
-
getByTestId
|
|
205
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
206
|
-
choiceMode: 'checkbox',
|
|
207
|
-
maxSelections: 2,
|
|
208
|
-
session: {
|
|
209
|
-
value: ['A']
|
|
210
|
-
},
|
|
211
|
-
onChoiceChanged
|
|
212
|
-
})));
|
|
213
|
-
_react2.fireEvent.click(getByTestId('select-B'));
|
|
214
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
215
|
-
value: 'B',
|
|
216
|
-
selected: true,
|
|
217
|
-
selector: 'Mouse'
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
it('blocks selecting beyond the limit', () => {
|
|
221
|
-
const onChoiceChanged = jest.fn();
|
|
222
|
-
const {
|
|
223
|
-
getByTestId
|
|
224
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
225
|
-
choiceMode: 'checkbox',
|
|
226
|
-
maxSelections: 2,
|
|
227
|
-
session: {
|
|
228
|
-
value: ['A', 'B']
|
|
229
|
-
},
|
|
230
|
-
onChoiceChanged
|
|
231
|
-
})));
|
|
232
|
-
_react2.fireEvent.click(getByTestId('select-C'));
|
|
233
|
-
expect(onChoiceChanged).not.toHaveBeenCalled();
|
|
234
|
-
});
|
|
235
|
-
it('allows deselecting when at the limit', () => {
|
|
236
|
-
const onChoiceChanged = jest.fn();
|
|
237
|
-
const {
|
|
238
|
-
getByTestId
|
|
239
|
-
} = (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, defaultProps({
|
|
240
|
-
choiceMode: 'checkbox',
|
|
241
|
-
maxSelections: 2,
|
|
242
|
-
session: {
|
|
243
|
-
value: ['A', 'B']
|
|
244
|
-
},
|
|
245
|
-
onChoiceChanged
|
|
246
|
-
})));
|
|
247
|
-
_react2.fireEvent.click(getByTestId('deselect-A'));
|
|
248
|
-
expect(onChoiceChanged).toHaveBeenCalledWith({
|
|
249
|
-
value: 'A',
|
|
250
|
-
selected: false,
|
|
251
|
-
selector: 'Mouse'
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
});
|
|
256
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfbXVsdGlwbGVDaG9pY2UiLCJqZXN0IiwibW9jayIsIk1vY2tUb2dnbGUiLCJwcm9wcyIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50Iiwic2hvdyIsInRvZ2dsZWQiLCJkaXNwbGF5TmFtZSIsImNvbG9yIiwidGV4dCIsImJhY2tncm91bmQiLCJpbmNvcnJlY3QiLCJjb3JyZWN0IiwicHJpbWFyeUxpZ2h0IiwicHJpbWFyeSIsIkNvbGxhcHNpYmxlIiwiY2hpbGRyZW4iLCJQcmV2aWV3UHJvbXB0IiwicHJvbXB0IiwidGFnTmFtZSIsIlRhZyIsInRyYW5zZm9ybURhdGFIZWFkaW5ncyIsImh0bWwiLCJfX2VzTW9kdWxlIiwidHJhbnNsYXRvciIsInQiLCJrZXkiLCJSZWFjdCIsImNob2ljZSIsIm9uQ2hvaWNlQ2hhbmdlZCIsIkZyYWdtZW50IiwidmFsdWUiLCJvbkNsaWNrIiwidGFyZ2V0IiwiY2hlY2tlZCIsImRlc2NyaWJlIiwibWtXcmFwcGVyIiwib3B0cyIsImRlZmF1bHRQcm9wcyIsImNsYXNzZXMiLCJjaG9pY2VzIiwiZGlzYWJsZWQiLCJrZXlNb2RlIiwiZm4iLCJtb2RlIiwicmVuZGVyIiwiTXVsdGlwbGVDaG9pY2UiLCJpdCIsImV4cGVjdCIsInNjcmVlbiIsImdldEJ5VGVzdElkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJ0b2dnbGUiLCJ0b0hhdmVBdHRyaWJ1dGUiLCJyZXNwb25zZUNvcnJlY3QiLCJmZWVkYmFja0VuYWJsZWQiLCJtYWtlQ2hvaWNlIiwibGFiZWwiLCJvdmVycmlkZXMiLCJjaG9pY2VNb2RlIiwic2Vzc2lvbiIsIm1heFNlbGVjdGlvbnMiLCJmaXJlRXZlbnQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwic2VsZWN0ZWQiLCJzZWxlY3RvciIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL211bHRpcGxlLWNob2ljZS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4sIGZpcmVFdmVudCB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgTXVsdGlwbGVDaG9pY2UgfSBmcm9tICcuLi9tdWx0aXBsZS1jaG9pY2UnO1xuXG4vLyBNb2NrIHRoZSBDb3JyZWN0QW5zd2VyVG9nZ2xlIGNvbXBvbmVudFxuamVzdC5tb2NrKCdAcGllLWxpYi9jb3JyZWN0LWFuc3dlci10b2dnbGUnLCAoKSA9PiB7XG4gIGNvbnN0IE1vY2tUb2dnbGUgPSAocHJvcHMpID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiY29ycmVjdC1hbnN3ZXItdG9nZ2xlXCIgZGF0YS1zaG93PXtwcm9wcy5zaG93fSBkYXRhLXRvZ2dsZWQ9e3Byb3BzLnRvZ2dsZWR9PlxuICAgICAgTW9jayBUb2dnbGVcbiAgICA8L2Rpdj5cbiAgKTtcbiAgTW9ja1RvZ2dsZS5kaXNwbGF5TmFtZSA9ICdDb3JyZWN0QW5zd2VyVG9nZ2xlJztcbiAgcmV0dXJuIE1vY2tUb2dnbGU7XG59KTtcblxuamVzdC5tb2NrKCdAcGllLWxpYi9yZW5kZXItdWknLCAoKSA9PiAoe1xuICBjb2xvcjoge1xuICAgIHRleHQ6ICgpID0+ICcjMDAwJyxcbiAgICBiYWNrZ3JvdW5kOiAoKSA9PiAnI2ZmZicsXG4gICAgaW5jb3JyZWN0OiAoKSA9PiAnI2YwMCcsXG4gICAgY29ycmVjdDogKCkgPT4gJyMwZjAnLFxuICAgIHByaW1hcnlMaWdodDogKCkgPT4gJyNlZWUnLFxuICAgIHByaW1hcnk6ICgpID0+ICcjMzMzJyxcbiAgfSxcbiAgQ29sbGFwc2libGU6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXY+e2NoaWxkcmVufTwvZGl2PixcbiAgUHJldmlld1Byb21wdDogKHsgcHJvbXB0LCB0YWdOYW1lOiBUYWcgPSAnZGl2JyB9KSA9PiA8VGFnPntwcm9tcHR9PC9UYWc+LFxuICB0cmFuc2Zvcm1EYXRhSGVhZGluZ3M6IChodG1sKSA9PiBodG1sLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL3RyYW5zbGF0b3InLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiB7IHRyYW5zbGF0b3I6IHsgdDogKGtleSkgPT4ga2V5IH0gfSxcbn0pKTtcblxuLy8gTW9jayBDaG9pY2Ugd2l0aCBzZXBhcmF0ZSBzZWxlY3QvZGVzZWxlY3QgYnV0dG9ucyBzbyBmaXJlRXZlbnQuY2xpY2tcbi8vIHJlbGlhYmx5IHRyaWdnZXJzIGhhbmRsZUNoYW5nZSB3aXRoIHRoZSBjb3JyZWN0IGNoZWNrZWQgdmFsdWUuXG5qZXN0Lm1vY2soJy4uL2Nob2ljZScsICgpID0+IHtcbiAgY29uc3QgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuICByZXR1cm4ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgZGVmYXVsdDogKHsgY2hvaWNlLCBvbkNob2ljZUNoYW5nZWQgfSkgPT4gKFxuICAgICAgPD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtgc2VsZWN0LSR7Y2hvaWNlLnZhbHVlfWB9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25DaG9pY2VDaGFuZ2VkKHsgdGFyZ2V0OiB7IHZhbHVlOiBjaG9pY2UudmFsdWUsIGNoZWNrZWQ6IHRydWUgfSB9KX1cbiAgICAgICAgLz5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZGVzZWxlY3QtJHtjaG9pY2UudmFsdWV9YH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkNob2ljZUNoYW5nZWQoeyB0YXJnZXQ6IHsgdmFsdWU6IGNob2ljZS52YWx1ZSwgY2hlY2tlZDogZmFsc2UgfSB9KX1cbiAgICAgICAgLz5cbiAgICAgIDwvPlxuICAgICksXG4gIH07XG59KTtcblxuXG5kZXNjcmliZSgnQ29yZXNwcmluZ0Nob2ljZScsICgpID0+IHtcbiAgY29uc3QgbWtXcmFwcGVyID0gKG9wdHMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2hvaWNlczogW10sXG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBrZXlNb2RlOiAnbGV0dGVycycsXG4gICAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAgIG1vZGU6ICdnYXRoZXInLFxuICAgICAgLi4ub3B0cyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlbmRlcig8TXVsdGlwbGVDaG9pY2Ugey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdUb2dnbGUnLCAoKSA9PiB7XG4gICAgaXQoJ3RvZ2dsZSBpcyByZW5kZXJlZCcsICgpID0+IHtcbiAgICAgIG1rV3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnY29ycmVjdC1hbnN3ZXItdG9nZ2xlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9nZ2xlIHNob3cgaXMgc2V0IHRvIGZhbHNlIGJ5IGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgICBta1dyYXBwZXIoKTtcbiAgICAgIGNvbnN0IHRvZ2dsZSA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnY29ycmVjdC1hbnN3ZXItdG9nZ2xlJyk7XG4gICAgICBleHBlY3QodG9nZ2xlKS50b0hhdmVBdHRyaWJ1dGUoJ2RhdGEtc2hvdycsICdmYWxzZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3dzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlLCBmZWVkYmFjayBpcyBlbmFibGVkIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IGZhbHNlLCBmZWVkYmFja0VuYWJsZWQ6IHRydWUgfSk7XG4gICAgICBjb25zdCB0b2dnbGUgPSBzY3JlZW4uZ2V0QnlUZXN0SWQoJ2NvcnJlY3QtYW5zd2VyLXRvZ2dsZScpO1xuICAgICAgZXhwZWN0KHRvZ2dsZSkudG9IYXZlQXR0cmlidXRlKCdkYXRhLXNob3cnLCAndHJ1ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hpZGVzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScsIHJlc3BvbnNlQ29ycmVjdDogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHRvZ2dsZSA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnY29ycmVjdC1hbnN3ZXItdG9nZ2xlJyk7XG4gICAgICBleHBlY3QodG9nZ2xlKS50b0hhdmVBdHRyaWJ1dGUoJ2RhdGEtc2hvdycsICdmYWxzZScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnTXVsdGlwbGVDaG9pY2UgaGFuZGxlQ2hhbmdlJywgKCkgPT4ge1xuICBjb25zdCBtYWtlQ2hvaWNlID0gKHZhbHVlKSA9PiAoeyB2YWx1ZSwgbGFiZWw6IHZhbHVlIH0pO1xuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IChvdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICBjaG9pY2VNb2RlOiAncmFkaW8nLFxuICAgIGNob2ljZXM6IFttYWtlQ2hvaWNlKCdBJyksIG1ha2VDaG9pY2UoJ0InKSwgbWFrZUNob2ljZSgnQycpXSxcbiAgICBzZXNzaW9uOiB7IHZhbHVlOiBbXSB9LFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtYXhTZWxlY3Rpb25zOiBudWxsJywgKCkgPT4ge1xuICAgIGl0KCdhbGxvd3Mgc2VsZWN0aW5nIGEgZmlyc3QgYW5zd2VyJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKFxuICAgICAgICA8TXVsdGlwbGVDaG9pY2Ugey4uLmRlZmF1bHRQcm9wcyh7IG1heFNlbGVjdGlvbnM6IG51bGwsIG9uQ2hvaWNlQ2hhbmdlZCB9KX0gLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soZ2V0QnlUZXN0SWQoJ3NlbGVjdC1BJykpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHZhbHVlOiAnQScsIHNlbGVjdGVkOiB0cnVlLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhbGxvd3Mgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGFuc3dlciBhZnRlciBvbmUgaXMgYWxyZWFkeSBzZWxlY3RlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hvaWNlQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcihcbiAgICAgICAgPE11bHRpcGxlQ2hvaWNlXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wcyh7XG4gICAgICAgICAgICBtYXhTZWxlY3Rpb25zOiBudWxsLFxuICAgICAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogWydBJ10gfSxcbiAgICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgICB9KX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soZ2V0QnlUZXN0SWQoJ3NlbGVjdC1CJykpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHZhbHVlOiAnQicsIHNlbGVjdGVkOiB0cnVlLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21heFNlbGVjdGlvbnM6IDEsIGNob2ljZU1vZGU6IHJhZGlvJywgKCkgPT4ge1xuICAgIGl0KCdhbGxvd3Mgc2VsZWN0aW5nIGEgZmlyc3QgYW5zd2VyJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKFxuICAgICAgICA8TXVsdGlwbGVDaG9pY2Ugey4uLmRlZmF1bHRQcm9wcyh7IG1heFNlbGVjdGlvbnM6IDEsIG9uQ2hvaWNlQ2hhbmdlZCB9KX0gLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soZ2V0QnlUZXN0SWQoJ3NlbGVjdC1BJykpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHZhbHVlOiAnQScsIHNlbGVjdGVkOiB0cnVlLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhbGxvd3Mgc3dpdGNoaW5nIHRvIGEgZGlmZmVyZW50IGFuc3dlciBhZnRlciBvbmUgaXMgYWxyZWFkeSBzZWxlY3RlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hvaWNlQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcihcbiAgICAgICAgPE11bHRpcGxlQ2hvaWNlXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wcyh7XG4gICAgICAgICAgICBtYXhTZWxlY3Rpb25zOiAxLFxuICAgICAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogWydBJ10gfSxcbiAgICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgICB9KX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBmaXJlRXZlbnQuY2xpY2soZ2V0QnlUZXN0SWQoJ3NlbGVjdC1CJykpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IHZhbHVlOiAnQicsIHNlbGVjdGVkOiB0cnVlLCBzZWxlY3RvcjogJ01vdXNlJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21heFNlbGVjdGlvbnM6IDIsIGNob2ljZU1vZGU6IGNoZWNrYm94JywgKCkgPT4ge1xuICAgIGl0KCdhbGxvd3Mgc2VsZWN0aW5nIHVwIHRvIHRoZSBsaW1pdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hvaWNlQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgZ2V0QnlUZXN0SWQgfSA9IHJlbmRlcihcbiAgICAgICAgPE11bHRpcGxlQ2hvaWNlXG4gICAgICAgICAgey4uLmRlZmF1bHRQcm9wcyh7XG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAnY2hlY2tib3gnLFxuICAgICAgICAgICAgbWF4U2VsZWN0aW9uczogMixcbiAgICAgICAgICAgIHNlc3Npb246IHsgdmFsdWU6IFsnQSddIH0sXG4gICAgICAgICAgICBvbkNob2ljZUNoYW5nZWQsXG4gICAgICAgICAgfSl9XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZmlyZUV2ZW50LmNsaWNrKGdldEJ5VGVzdElkKCdzZWxlY3QtQicpKTtcblxuICAgICAgZXhwZWN0KG9uQ2hvaWNlQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyB2YWx1ZTogJ0InLCBzZWxlY3RlZDogdHJ1ZSwgc2VsZWN0b3I6ICdNb3VzZScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYmxvY2tzIHNlbGVjdGluZyBiZXlvbmQgdGhlIGxpbWl0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKFxuICAgICAgICA8TXVsdGlwbGVDaG9pY2VcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzKHtcbiAgICAgICAgICAgIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICBtYXhTZWxlY3Rpb25zOiAyLFxuICAgICAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogWydBJywgJ0InXSB9LFxuICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkLFxuICAgICAgICAgIH0pfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRlc3RJZCgnc2VsZWN0LUMnKSk7XG5cbiAgICAgIGV4cGVjdChvbkNob2ljZUNoYW5nZWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWxsb3dzIGRlc2VsZWN0aW5nIHdoZW4gYXQgdGhlIGxpbWl0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgeyBnZXRCeVRlc3RJZCB9ID0gcmVuZGVyKFxuICAgICAgICA8TXVsdGlwbGVDaG9pY2VcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzKHtcbiAgICAgICAgICAgIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gICAgICAgICAgICBtYXhTZWxlY3Rpb25zOiAyLFxuICAgICAgICAgICAgc2Vzc2lvbjogeyB2YWx1ZTogWydBJywgJ0InXSB9LFxuICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkLFxuICAgICAgICAgIH0pfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGZpcmVFdmVudC5jbGljayhnZXRCeVRlc3RJZCgnZGVzZWxlY3QtQScpKTtcblxuICAgICAgZXhwZWN0KG9uQ2hvaWNlQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoeyB2YWx1ZTogJ0EnLCBzZWxlY3RlZDogZmFsc2UsIHNlbGVjdG9yOiAnTW91c2UnIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFD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
|