@pie-element/ebsr 12.3.4-next.3 → 13.0.0-beta.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 (101) hide show
  1. package/configure/lib/defaults.js +23 -36
  2. package/configure/lib/defaults.js.map +1 -1
  3. package/configure/lib/index.js +114 -202
  4. package/configure/lib/index.js.map +1 -1
  5. package/configure/lib/main.js +188 -271
  6. package/configure/lib/main.js.map +1 -1
  7. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.json +1972 -0
  8. package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.md +4213 -0
  9. package/configure/node_modules/@pie-element/multiple-choice/PRINT.md +35 -0
  10. package/configure/node_modules/@pie-element/multiple-choice/README.md +56 -0
  11. package/configure/node_modules/@pie-element/multiple-choice/choice.png +0 -0
  12. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.json +1387 -0
  13. package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.md +3351 -0
  14. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/__tests__/root.test.js +248 -0
  15. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js +200 -0
  16. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js.map +1 -0
  17. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js +211 -0
  18. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js.map +1 -0
  19. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js +477 -0
  20. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js.map +1 -0
  21. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js +18 -0
  22. package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js.map +1 -0
  23. package/configure/node_modules/@pie-element/multiple-choice/configure/package.json +22 -0
  24. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.json +527 -0
  25. package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.md +2316 -0
  26. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/__tests__/index.test.js +520 -0
  27. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/__tests__/utils.test.js +8 -0
  28. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js +33 -0
  29. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js.map +1 -0
  30. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js +251 -0
  31. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js.map +1 -0
  32. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js +16 -0
  33. package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js.map +1 -0
  34. package/configure/node_modules/@pie-element/multiple-choice/controller/package.json +15 -0
  35. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json +2993 -0
  36. package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json.md +2217 -0
  37. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/config.js +8 -0
  38. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/generate.js +61 -0
  39. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/index.html +1 -0
  40. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/pie.manifest.json +11 -0
  41. package/configure/node_modules/@pie-element/multiple-choice/docs/demo/session.js +7 -0
  42. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json +1332 -0
  43. package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json.md +1015 -0
  44. package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/choice-input-test.js +117 -0
  45. package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/index-test.js +151 -0
  46. package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/key-events-test.js +95 -0
  47. package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/multiple-choice-test.js +223 -0
  48. package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/session-updater-test.js +70 -0
  49. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js +370 -0
  50. package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js.map +1 -0
  51. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js +197 -0
  52. package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js.map +1 -0
  53. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js +130 -0
  54. package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js.map +1 -0
  55. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js +292 -0
  56. package/configure/node_modules/@pie-element/multiple-choice/lib/index.js.map +1 -0
  57. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js +54 -0
  58. package/configure/node_modules/@pie-element/multiple-choice/lib/main.js.map +1 -0
  59. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js +386 -0
  60. package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js.map +1 -0
  61. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js +92 -0
  62. package/configure/node_modules/@pie-element/multiple-choice/lib/print.js.map +1 -0
  63. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js +37 -0
  64. package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js.map +1 -0
  65. package/configure/node_modules/@pie-element/multiple-choice/package.json +39 -0
  66. package/configure/package.json +9 -6
  67. package/configure/src/__tests__/index.test.js +99 -108
  68. package/configure/src/index.js +13 -6
  69. package/configure/src/main.jsx +14 -18
  70. package/controller/lib/defaults.js +20 -32
  71. package/controller/lib/defaults.js.map +1 -1
  72. package/controller/lib/index.js +224 -349
  73. package/controller/lib/index.js.map +1 -1
  74. package/controller/lib/utils.js +4 -18
  75. package/controller/lib/utils.js.map +1 -1
  76. package/controller/package.json +3 -3
  77. package/lib/index.js +113 -181
  78. package/lib/index.js.map +1 -1
  79. package/lib/print.js +120 -204
  80. package/lib/print.js.map +1 -1
  81. package/package.json +5 -13
  82. package/src/__tests__/index.test.js +18 -5
  83. package/configure/src/__tests__/__snapshots__/index.test.js.snap +0 -83
  84. package/esm/configure.js +0 -12003
  85. package/esm/configure.js.map +0 -1
  86. package/esm/controller.js +0 -3358
  87. package/esm/controller.js.map +0 -1
  88. package/esm/element.js +0 -2203
  89. package/esm/element.js.map +0 -1
  90. package/esm/package.json +0 -3
  91. package/esm/print.js +0 -4092
  92. package/esm/print.js.map +0 -1
  93. package/module/configure.js +0 -1
  94. package/module/controller.js +0 -6469
  95. package/module/demo.js +0 -77
  96. package/module/element.js +0 -1
  97. package/module/index.html +0 -21
  98. package/module/manifest.json +0 -14
  99. package/module/print-demo.js +0 -115
  100. package/module/print.html +0 -18
  101. package/module/print.js +0 -1
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _enzyme = require("enzyme");
6
+ var _multipleChoice = require("../multiple-choice");
7
+ var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
8
+ describe('Choice', () => {
9
+ let wrapper,
10
+ onChoiceChanged = jest.fn();
11
+ beforeEach(() => {
12
+ wrapper = extras => {
13
+ const props = {
14
+ classes: {},
15
+ choice: {},
16
+ index: 0,
17
+ choicesLength: 1,
18
+ showCorrect: false,
19
+ isEvaluateMode: false,
20
+ choiceMode: 'radio',
21
+ disabled: true,
22
+ onChoiceChanged,
23
+ checked: true,
24
+ correctness: 'correct',
25
+ displayKey: '0',
26
+ choicesLayout: 'grid',
27
+ gridColumns: 2,
28
+ ...extras
29
+ };
30
+ return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_multipleChoice.Choice, props));
31
+ };
32
+ });
33
+ describe('snapshot', () => {
34
+ it('renders', () => {
35
+ expect(wrapper()).toMatchSnapshot();
36
+ });
37
+ });
38
+ describe('logic', () => {
39
+ it('does not call onChoiceChanged if disabled is true', () => {
40
+ let w = wrapper();
41
+ w.instance().onChange();
42
+ expect(onChoiceChanged).not.toHaveBeenCalled();
43
+ });
44
+ it('calls onChoiceChanged if disabled is false', () => {
45
+ let w = wrapper({
46
+ disabled: false
47
+ });
48
+ w.instance().onChange();
49
+ expect(onChoiceChanged).toHaveBeenCalled();
50
+ });
51
+ });
52
+ });
53
+ describe('CorespringChoice', () => {
54
+ let wrapper, toggle;
55
+ beforeEach(() => {
56
+ toggle = () => {
57
+ return /*#__PURE__*/_react.default.createElement("div", null, "mocked-toggle");
58
+ };
59
+ });
60
+ let mkWrapper = (opts, clone = true) => {
61
+ opts = clone ? {
62
+ classes: {},
63
+ choices: [],
64
+ disabled: false,
65
+ keyMode: 'letters',
66
+ onChoiceChanged: jest.fn(),
67
+ mode: 'gather',
68
+ ...opts
69
+ } : opts;
70
+ return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, opts));
71
+ };
72
+ describe('snapshot', () => {
73
+ it('renders', () => {
74
+ wrapper = mkWrapper({
75
+ choices: [{
76
+ value: 'a',
77
+ label: 'label a',
78
+ correct: true,
79
+ feedback: 'great'
80
+ }, {
81
+ value: 'b',
82
+ label: 'label b'
83
+ }, {
84
+ value: 'c',
85
+ label: 'label c',
86
+ correct: true,
87
+ feedback: 'great'
88
+ }]
89
+ });
90
+ expect(wrapper).toMatchSnapshot();
91
+ });
92
+ describe('renders incorrect tick if one answer is correct but it is not checked', () => {
93
+ it('renders', () => {
94
+ let w = mkWrapper({
95
+ mode: 'evaluate',
96
+ keyMode: 'none',
97
+ choices: [{
98
+ value: 'a',
99
+ label: 'label a',
100
+ correct: true,
101
+ feedback: 'great'
102
+ }, {
103
+ value: 'b',
104
+ label: 'label b'
105
+ }, {
106
+ value: 'c',
107
+ label: 'label c',
108
+ correct: true,
109
+ feedback: 'great'
110
+ }],
111
+ session: {
112
+ value: ['a']
113
+ }
114
+ });
115
+ expect(w).toMatchSnapshot();
116
+ });
117
+ });
118
+ describe('getCorrectness', () => {
119
+ let itemChoices = [{
120
+ value: 'a',
121
+ label: 'label a',
122
+ correct: true,
123
+ feedback: 'great'
124
+ }, {
125
+ value: 'b',
126
+ label: 'label b'
127
+ }, {
128
+ value: 'c',
129
+ label: 'label c',
130
+ feedback: 'great'
131
+ }, {
132
+ value: 'd',
133
+ label: 'label d',
134
+ correct: true,
135
+ feedback: 'great'
136
+ }];
137
+ let w = mkWrapper({
138
+ mode: 'evaluate',
139
+ choices: itemChoices,
140
+ session: {
141
+ value: ['a', 'c']
142
+ }
143
+ });
144
+ describe('showCorrectToggle disabled (state.showCorrect is false)', () => {
145
+ it('shows choice correctness only if was checked', () => {
146
+ // this one was selected and is correct
147
+ expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct');
148
+ // this one was not selected and is incorrect
149
+ expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined);
150
+ // this one was selected, but is incorrect
151
+ expect(w.instance().getCorrectness(itemChoices[2])).toEqual('incorrect');
152
+ // this one was not selected and is correct
153
+ expect(w.instance().getCorrectness(itemChoices[3])).toEqual('incorrect');
154
+ });
155
+ });
156
+ describe('showCorrectToggle enabled (state.showCorrect is true)', () => {
157
+ it('shows choice correctness no matter if was checked or not', () => {
158
+ w.instance().state.showCorrect = true;
159
+
160
+ // this one is correct
161
+ expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct');
162
+ // this one is not correct
163
+ expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined);
164
+ // this one is not correct
165
+ expect(w.instance().getCorrectness(itemChoices[2])).toEqual(undefined);
166
+ // this one is correct
167
+ expect(w.instance().getCorrectness(itemChoices[3])).toEqual('correct');
168
+ });
169
+ });
170
+ });
171
+ describe('onToggle', () => {
172
+ it('toggles the state', () => {
173
+ let w = mkWrapper({
174
+ mode: 'evaluate'
175
+ });
176
+ expect(w.state('showCorrect')).toEqual(false);
177
+ w.instance().onToggle();
178
+ expect(w.state('showCorrect')).toEqual(true);
179
+ });
180
+ });
181
+ describe('Toggle', () => {
182
+ it('toggle is rendered', () => {
183
+ const t = mkWrapper().find(_correctAnswerToggle.default);
184
+ expect(t.length).toEqual(1);
185
+ });
186
+ it('toggle show is set to false', () => {
187
+ expect(mkWrapper().find(_correctAnswerToggle.default).prop('show')).toEqual(false);
188
+ });
189
+ it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', () => {
190
+ expect(mkWrapper({
191
+ mode: 'evaluate',
192
+ responseCorrect: false,
193
+ feedbackEnabled: true
194
+ }).find(_correctAnswerToggle.default).prop('show')).toEqual(true);
195
+ });
196
+ it('hides toggle if mode is evaluate and responseCorrect is false', () => {
197
+ expect(mkWrapper({
198
+ mode: 'evaluate',
199
+ responseCorrect: true
200
+ }).find(_correctAnswerToggle.default).prop('show')).toEqual(false);
201
+ });
202
+ it('not toggled if showCorrect is false', () => {
203
+ let w = mkWrapper({
204
+ mode: 'evaluate'
205
+ });
206
+ w.setState({
207
+ showCorrect: false
208
+ });
209
+ expect(w.find(_correctAnswerToggle.default).prop('toggled')).toEqual(false);
210
+ });
211
+ it('is toggled showCorrect=true && mode=evaluate', () => {
212
+ let w = mkWrapper({
213
+ mode: 'evaluate'
214
+ });
215
+ w.setState({
216
+ showCorrect: true
217
+ });
218
+ expect(w.find(_correctAnswerToggle.default).prop('toggled')).toEqual(true);
219
+ });
220
+ });
221
+ });
222
+ });
223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfbXVsdGlwbGVDaG9pY2UiLCJfY29ycmVjdEFuc3dlclRvZ2dsZSIsImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hvaWNlQ2hhbmdlZCIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJleHRyYXMiLCJwcm9wcyIsImNsYXNzZXMiLCJjaG9pY2UiLCJpbmRleCIsImNob2ljZXNMZW5ndGgiLCJzaG93Q29ycmVjdCIsImlzRXZhbHVhdGVNb2RlIiwiY2hvaWNlTW9kZSIsImRpc2FibGVkIiwiY2hlY2tlZCIsImNvcnJlY3RuZXNzIiwiZGlzcGxheUtleSIsImNob2ljZXNMYXlvdXQiLCJncmlkQ29sdW1ucyIsInNoYWxsb3ciLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIkNob2ljZSIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidyIsImluc3RhbmNlIiwib25DaGFuZ2UiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9nZ2xlIiwibWtXcmFwcGVyIiwib3B0cyIsImNsb25lIiwiY2hvaWNlcyIsImtleU1vZGUiLCJtb2RlIiwiTXVsdGlwbGVDaG9pY2UiLCJ2YWx1ZSIsImxhYmVsIiwiY29ycmVjdCIsImZlZWRiYWNrIiwic2Vzc2lvbiIsIml0ZW1DaG9pY2VzIiwiZ2V0Q29ycmVjdG5lc3MiLCJ0b0VxdWFsIiwidW5kZWZpbmVkIiwic3RhdGUiLCJvblRvZ2dsZSIsInQiLCJmaW5kIiwiQ29ycmVjdEFuc3dlclRvZ2dsZSIsImxlbmd0aCIsInByb3AiLCJyZXNwb25zZUNvcnJlY3QiLCJmZWVkYmFja0VuYWJsZWQiLCJzZXRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbXVsdGlwbGUtY2hvaWNlLXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCB7IE11bHRpcGxlQ2hvaWNlLCBDaG9pY2UgfSBmcm9tICcuLi9tdWx0aXBsZS1jaG9pY2UnO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcblxuZGVzY3JpYmUoJ0Nob2ljZScsICgpID0+IHtcbiAgbGV0IHdyYXBwZXIsXG4gICAgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGNob2ljZToge30sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjaG9pY2VzTGVuZ3RoOiAxLFxuICAgICAgICBzaG93Q29ycmVjdDogZmFsc2UsXG4gICAgICAgIGlzRXZhbHVhdGVNb2RlOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlTW9kZTogJ3JhZGlvJyxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgY29ycmVjdG5lc3M6ICdjb3JyZWN0JyxcbiAgICAgICAgZGlzcGxheUtleTogJzAnLFxuICAgICAgICBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIGdyaWRDb2x1bW5zOiAyLFxuICAgICAgICAuLi5leHRyYXMsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNoYWxsb3coPENob2ljZSB7Li4ucHJvcHN9IC8+KTtcbiAgICB9O1xuICB9KTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGl0KCdkb2VzIG5vdCBjYWxsIG9uQ2hvaWNlQ2hhbmdlZCBpZiBkaXNhYmxlZCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgbGV0IHcgPSB3cmFwcGVyKCk7XG5cbiAgICAgIHcuaW5zdGFuY2UoKS5vbkNoYW5nZSgpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uQ2hvaWNlQ2hhbmdlZCBpZiBkaXNhYmxlZCBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIGxldCB3ID0gd3JhcHBlcih7IGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLm9uQ2hhbmdlKCk7XG5cbiAgICAgIGV4cGVjdChvbkNob2ljZUNoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NvcmVzcHJpbmdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyLCB0b2dnbGU7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdG9nZ2xlID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIDxkaXY+bW9ja2VkLXRvZ2dsZTwvZGl2PjtcbiAgICB9O1xuICB9KTtcblxuICBsZXQgbWtXcmFwcGVyID0gKG9wdHMsIGNsb25lID0gdHJ1ZSkgPT4ge1xuICAgIG9wdHMgPSBjbG9uZVxuICAgICAgPyB7XG4gICAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGtleU1vZGU6ICdsZXR0ZXJzJyxcbiAgICAgICAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9XG4gICAgICA6IG9wdHM7XG5cbiAgICByZXR1cm4gc2hhbGxvdyg8TXVsdGlwbGVDaG9pY2Ugey4uLm9wdHN9IC8+KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyID0gbWtXcmFwcGVyKHtcbiAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgIHsgdmFsdWU6ICdhJywgbGFiZWw6ICdsYWJlbCBhJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgICB7IHZhbHVlOiAnYycsIGxhYmVsOiAnbGFiZWwgYycsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHdyYXBwZXIpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlbmRlcnMgaW5jb3JyZWN0IHRpY2sgaWYgb25lIGFuc3dlciBpcyBjb3JyZWN0IGJ1dCBpdCBpcyBub3QgY2hlY2tlZCcsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7XG4gICAgICAgICAgbW9kZTogJ2V2YWx1YXRlJyxcbiAgICAgICAgICBrZXlNb2RlOiAnbm9uZScsXG4gICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgeyB2YWx1ZTogJ2EnLCBsYWJlbDogJ2xhYmVsIGEnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYycsIGxhYmVsOiAnbGFiZWwgYycsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzZXNzaW9uOiB7XG4gICAgICAgICAgICB2YWx1ZTogWydhJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZ2V0Q29ycmVjdG5lc3MnLCAoKSA9PiB7XG4gICAgICBsZXQgaXRlbUNob2ljZXMgPSBbXG4gICAgICAgIHsgdmFsdWU6ICdhJywgbGFiZWw6ICdsYWJlbCBhJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgIHsgdmFsdWU6ICdjJywgbGFiZWw6ICdsYWJlbCBjJywgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2QnLCBsYWJlbDogJ2xhYmVsIGQnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgXTtcbiAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHtcbiAgICAgICAgbW9kZTogJ2V2YWx1YXRlJyxcbiAgICAgICAgY2hvaWNlczogaXRlbUNob2ljZXMsXG4gICAgICAgIHNlc3Npb246IHtcbiAgICAgICAgICB2YWx1ZTogWydhJywgJ2MnXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnc2hvd0NvcnJlY3RUb2dnbGUgZGlzYWJsZWQgKHN0YXRlLnNob3dDb3JyZWN0IGlzIGZhbHNlKScsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3dzIGNob2ljZSBjb3JyZWN0bmVzcyBvbmx5IGlmIHdhcyBjaGVja2VkJywgKCkgPT4ge1xuICAgICAgICAgIC8vIHRoaXMgb25lIHdhcyBzZWxlY3RlZCBhbmQgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMF0pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIG5vdCBzZWxlY3RlZCBhbmQgaXMgaW5jb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1sxXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgc2VsZWN0ZWQsIGJ1dCBpcyBpbmNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzJdKSkudG9FcXVhbCgnaW5jb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIG5vdCBzZWxlY3RlZCBhbmQgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbM10pKS50b0VxdWFsKCdpbmNvcnJlY3QnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3Nob3dDb3JyZWN0VG9nZ2xlIGVuYWJsZWQgKHN0YXRlLnNob3dDb3JyZWN0IGlzIHRydWUpJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvd3MgY2hvaWNlIGNvcnJlY3RuZXNzIG5vIG1hdHRlciBpZiB3YXMgY2hlY2tlZCBvciBub3QnLCAoKSA9PiB7XG4gICAgICAgICAgdy5pbnN0YW5jZSgpLnN0YXRlLnNob3dDb3JyZWN0ID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIGNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzBdKSkudG9FcXVhbCgnY29ycmVjdCcpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIG5vdCBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1sxXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSBpcyBub3QgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMl0pKS50b0VxdWFsKHVuZGVmaW5lZCk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbM10pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Ub2dnbGUnLCAoKSA9PiB7XG4gICAgICBpdCgndG9nZ2xlcyB0aGUgc3RhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgZXhwZWN0KHcuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Ub2dnbGUoKTtcbiAgICAgICAgZXhwZWN0KHcuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdUb2dnbGUnLCAoKSA9PiB7XG4gICAgICBpdCgndG9nZ2xlIGlzIHJlbmRlcmVkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0ID0gbWtXcmFwcGVyKCkuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKTtcbiAgICAgICAgZXhwZWN0KHQubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0b2dnbGUgc2hvdyBpcyBzZXQgdG8gZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChta1dyYXBwZXIoKS5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3Nob3cnKSkudG9FcXVhbChmYWxzZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3dzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlLCBmZWVkYmFjayBpcyBlbmFibGVkIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IGZhbHNlLCBmZWVkYmFja0VuYWJsZWQ6IHRydWUgfSlcbiAgICAgICAgICAgIC5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpXG4gICAgICAgICAgICAucHJvcCgnc2hvdycpLFxuICAgICAgICApLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2hpZGVzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IHRydWUgfSkuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKS5wcm9wKCdzaG93JykpLnRvRXF1YWwoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ25vdCB0b2dnbGVkIGlmIHNob3dDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScgfSk7XG4gICAgICAgIHcuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdCh3LmZpbmQoQ29ycmVjdEFuc3dlclRvZ2dsZSkucHJvcCgndG9nZ2xlZCcpKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaXMgdG9nZ2xlZCBzaG93Q29ycmVjdD10cnVlICYmIG1vZGU9ZXZhbHVhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgdy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgICBleHBlY3Qody5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3RvZ2dsZWQnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTTtFQUN2QixJQUFJQyxPQUFPO0lBQ1RDLGVBQWUsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUU3QkMsVUFBVSxDQUFDLE1BQU07SUFDZkosT0FBTyxHQUFJSyxNQUFNLElBQUs7TUFDcEIsTUFBTUMsS0FBSyxHQUFHO1FBQ1pDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDWEMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNWQyxLQUFLLEVBQUUsQ0FBQztRQUNSQyxhQUFhLEVBQUUsQ0FBQztRQUNoQkMsV0FBVyxFQUFFLEtBQUs7UUFDbEJDLGNBQWMsRUFBRSxLQUFLO1FBQ3JCQyxVQUFVLEVBQUUsT0FBTztRQUNuQkMsUUFBUSxFQUFFLElBQUk7UUFDZGIsZUFBZTtRQUNmYyxPQUFPLEVBQUUsSUFBSTtRQUNiQyxXQUFXLEVBQUUsU0FBUztRQUN0QkMsVUFBVSxFQUFFLEdBQUc7UUFDZkMsYUFBYSxFQUFFLE1BQU07UUFDckJDLFdBQVcsRUFBRSxDQUFDO1FBQ2QsR0FBR2Q7TUFDTCxDQUFDO01BQ0QsT0FBTyxJQUFBZSxlQUFPLGVBQUMzQixNQUFBLENBQUE0QixPQUFBLENBQUFDLGFBQUEsQ0FBQ3pCLGVBQUEsQ0FBQTBCLE1BQU0sRUFB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
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ var _sessionUpdater = require("../session-updater");
4
+ describe('session-updater', () => {
5
+ let updater;
6
+ beforeEach(() => {});
7
+ describe('updateSessionValue', () => {
8
+ const assert = (mode, session, data, expected) => {
9
+ return () => {
10
+ (0, _sessionUpdater.updateSessionValue)(session, mode, data);
11
+ expect(session.value).toEqual(expected);
12
+ };
13
+ };
14
+ describe('checkbox', () => {
15
+ const cb = assert.bind(null, 'checkbox');
16
+ it('adds 1', cb({
17
+ value: []
18
+ }, {
19
+ value: '1',
20
+ selected: true
21
+ }, ['1']));
22
+ it('removes 1', cb({
23
+ value: ['1']
24
+ }, {
25
+ value: '1',
26
+ selected: false
27
+ }, []));
28
+ it('adds 2', cb({
29
+ value: ['1']
30
+ }, {
31
+ value: '2',
32
+ selected: true
33
+ }, ['1', '2']));
34
+ it('does not add duplicate 1', cb({
35
+ value: ['1']
36
+ }, {
37
+ value: '1',
38
+ selected: true
39
+ }, ['1']));
40
+ it('does not remove if not in arrary', cb({
41
+ value: ['1']
42
+ }, {
43
+ value: '2',
44
+ selected: false
45
+ }, ['1']));
46
+ });
47
+ describe('radio', () => {
48
+ const cb = assert.bind(null, 'radio');
49
+ it('adds 1', cb({
50
+ value: []
51
+ }, {
52
+ value: '1',
53
+ selected: true
54
+ }, ['1']));
55
+ it('adds 2', cb({
56
+ value: ['1']
57
+ }, {
58
+ value: '2',
59
+ selected: true
60
+ }, ['2']));
61
+ it('does not add duplicate 1', cb({
62
+ value: ['1']
63
+ }, {
64
+ value: '1',
65
+ selected: true
66
+ }, ['1']));
67
+ });
68
+ });
69
+ });
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2Vzc2lvblVwZGF0ZXIiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJ1cGRhdGVyIiwiYmVmb3JlRWFjaCIsImFzc2VydCIsIm1vZGUiLCJzZXNzaW9uIiwiZGF0YSIsImV4cGVjdGVkIiwidXBkYXRlU2Vzc2lvblZhbHVlIiwiZXhwZWN0IiwidmFsdWUiLCJ0b0VxdWFsIiwiY2IiLCJiaW5kIiwiaXQiLCJzZWxlY3RlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2Vzc2lvbi11cGRhdGVyLXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVwZGF0ZVNlc3Npb25WYWx1ZSB9IGZyb20gJy4uL3Nlc3Npb24tdXBkYXRlcic7XG5cbmRlc2NyaWJlKCdzZXNzaW9uLXVwZGF0ZXInLCAoKSA9PiB7XG4gIGxldCB1cGRhdGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge30pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGVTZXNzaW9uVmFsdWUnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0ID0gKG1vZGUsIHNlc3Npb24sIGRhdGEsIGV4cGVjdGVkKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB1cGRhdGVTZXNzaW9uVmFsdWUoc2Vzc2lvbiwgbW9kZSwgZGF0YSk7XG4gICAgICAgIGV4cGVjdChzZXNzaW9uLnZhbHVlKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRlc2NyaWJlKCdjaGVja2JveCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNiID0gYXNzZXJ0LmJpbmQobnVsbCwgJ2NoZWNrYm94Jyk7XG4gICAgICBpdCgnYWRkcyAxJywgY2IoeyB2YWx1ZTogW10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ3JlbW92ZXMgMScsIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IGZhbHNlIH0sIFtdKSk7XG4gICAgICBpdCgnYWRkcyAyJywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzInLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnLCAnMiddKSk7XG4gICAgICBpdCgnZG9lcyBub3QgYWRkIGR1cGxpY2F0ZSAxJywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ2RvZXMgbm90IHJlbW92ZSBpZiBub3QgaW4gYXJyYXJ5JywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzInLCBzZWxlY3RlZDogZmFsc2UgfSwgWycxJ10pKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyYWRpbycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNiID0gYXNzZXJ0LmJpbmQobnVsbCwgJ3JhZGlvJyk7XG4gICAgICBpdCgnYWRkcyAxJywgY2IoeyB2YWx1ZTogW10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ2FkZHMgMicsIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcyJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycyJ10pKTtcbiAgICAgIGl0KCdkb2VzIG5vdCBhZGQgZHVwbGljYXRlIDEnLCBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMScsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMSddKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNO0VBQ2hDLElBQUlDLE9BQU87RUFFWEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFFcEJGLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNO0lBQ25DLE1BQU1HLE1BQU0sR0FBR0EsQ0FBQ0MsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFB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