@pie-element/categorize 11.3.4-next.3 → 12.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +0 -11
  2. package/configure/CHANGELOG.md +0 -11
  3. package/configure/lib/__tests__/main.test.js +100 -0
  4. package/configure/lib/__tests__/utils.js +39 -0
  5. package/configure/lib/defaults.js +3 -6
  6. package/configure/lib/defaults.js.map +1 -1
  7. package/configure/lib/design/__tests__/builder.test.js +34 -0
  8. package/configure/lib/design/__tests__/buttons.test.js +36 -0
  9. package/configure/lib/design/__tests__/header.test.js +37 -0
  10. package/configure/lib/design/__tests__/index.test.js +125 -0
  11. package/configure/lib/design/__tests__/input-header.test.js +41 -0
  12. package/configure/lib/design/builder.js +16 -34
  13. package/configure/lib/design/builder.js.map +1 -1
  14. package/configure/lib/design/buttons.js +42 -96
  15. package/configure/lib/design/buttons.js.map +1 -1
  16. package/configure/lib/design/categories/RowLabel.js +34 -47
  17. package/configure/lib/design/categories/RowLabel.js.map +1 -1
  18. package/configure/lib/design/categories/__tests__/alternateResponses.test.js +93 -0
  19. package/configure/lib/design/categories/__tests__/category.test.js +65 -0
  20. package/configure/lib/design/categories/__tests__/choice-preview.test.js +52 -0
  21. package/configure/lib/design/categories/__tests__/droppable-placeholder.test.js +63 -0
  22. package/configure/lib/design/categories/__tests__/index.test.js +91 -0
  23. package/configure/lib/design/categories/alternateResponses.js +97 -252
  24. package/configure/lib/design/categories/alternateResponses.js.map +1 -1
  25. package/configure/lib/design/categories/category.js +136 -209
  26. package/configure/lib/design/categories/category.js.map +1 -1
  27. package/configure/lib/design/categories/choice-preview.js +62 -127
  28. package/configure/lib/design/categories/choice-preview.js.map +1 -1
  29. package/configure/lib/design/categories/droppable-placeholder.js +74 -166
  30. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -1
  31. package/configure/lib/design/categories/index.js +196 -385
  32. package/configure/lib/design/categories/index.js.map +1 -1
  33. package/configure/lib/design/choices/__tests__/choice.test.js +62 -0
  34. package/configure/lib/design/choices/__tests__/config.test.js +66 -0
  35. package/configure/lib/design/choices/__tests__/index.test.js +70 -0
  36. package/configure/lib/design/choices/choice.js +156 -265
  37. package/configure/lib/design/choices/choice.js.map +1 -1
  38. package/configure/lib/design/choices/config.js +43 -99
  39. package/configure/lib/design/choices/config.js.map +1 -1
  40. package/configure/lib/design/choices/index.js +149 -237
  41. package/configure/lib/design/choices/index.js.map +1 -1
  42. package/configure/lib/design/header.js +58 -112
  43. package/configure/lib/design/header.js.map +1 -1
  44. package/configure/lib/design/index.js +633 -478
  45. package/configure/lib/design/index.js.map +1 -1
  46. package/configure/lib/design/input-header.js +95 -151
  47. package/configure/lib/design/input-header.js.map +1 -1
  48. package/configure/lib/design/utils.js +5 -16
  49. package/configure/lib/design/utils.js.map +1 -1
  50. package/configure/lib/index.js +121 -184
  51. package/configure/lib/index.js.map +1 -1
  52. package/configure/lib/main.js +31 -75
  53. package/configure/lib/main.js.map +1 -1
  54. package/configure/lib/utils.js +23 -33
  55. package/configure/lib/utils.js.map +1 -1
  56. package/configure/package.json +15 -15
  57. package/controller/CHANGELOG.md +0 -11
  58. package/controller/lib/__tests__/index.test.js +526 -0
  59. package/controller/lib/defaults.js +3 -6
  60. package/controller/lib/defaults.js.map +1 -1
  61. package/controller/lib/index.js +238 -319
  62. package/controller/lib/index.js.map +1 -1
  63. package/controller/lib/utils.js +29 -66
  64. package/controller/lib/utils.js.map +1 -1
  65. package/controller/package.json +5 -5
  66. package/docs/demo/.pie/.configure/package.json +10 -0
  67. package/docs/demo/.pie/.configure/yarn.lock +2181 -0
  68. package/docs/demo/.pie/.controllers/package.json +10 -0
  69. package/docs/demo/.pie/.controllers/yarn.lock +110 -0
  70. package/docs/demo/.pie/info.entry.js +89 -0
  71. package/docs/demo/.pie/info.webpack.config.js +119 -0
  72. package/docs/demo/.pie/package.json +10 -0
  73. package/docs/demo/.pie/yarn.lock +2190 -0
  74. package/docs/demo/pie.manifest.json +11 -0
  75. package/lib/__tests__/index.test.js +197 -0
  76. package/lib/categorize/__tests__/categories.test.js +138 -0
  77. package/lib/categorize/__tests__/category.test.js +137 -0
  78. package/lib/categorize/__tests__/choice.test.js +88 -0
  79. package/lib/categorize/__tests__/choices.test.js +118 -0
  80. package/lib/categorize/__tests__/droppable-placeholder.test.js +96 -0
  81. package/lib/categorize/__tests__/grid-content.test.js +48 -0
  82. package/lib/categorize/__tests__/index.test.js +152 -0
  83. package/lib/categorize/categories.js +107 -165
  84. package/lib/categorize/categories.js.map +1 -1
  85. package/lib/categorize/category.js +74 -124
  86. package/lib/categorize/category.js.map +1 -1
  87. package/lib/categorize/choice.js +119 -246
  88. package/lib/categorize/choice.js.map +1 -1
  89. package/lib/categorize/choices.js +67 -132
  90. package/lib/categorize/choices.js.map +1 -1
  91. package/lib/categorize/droppable-placeholder.js +47 -104
  92. package/lib/categorize/droppable-placeholder.js.map +1 -1
  93. package/lib/categorize/grid-content.js +40 -88
  94. package/lib/categorize/grid-content.js.map +1 -1
  95. package/lib/categorize/index.js +342 -318
  96. package/lib/categorize/index.js.map +1 -1
  97. package/lib/index.js +286 -307
  98. package/lib/index.js.map +1 -1
  99. package/package.json +16 -14
  100. package/esm/configure.js +0 -34401
  101. package/esm/configure.js.map +0 -1
  102. package/esm/controller.js +0 -1468
  103. package/esm/controller.js.map +0 -1
  104. package/esm/element.js +0 -13134
  105. package/esm/element.js.map +0 -1
  106. package/esm/package.json +0 -3
@@ -0,0 +1,11 @@
1
+ {
2
+ "hash": "-1338235779",
3
+ "info": [
4
+ {
5
+ "pie": "@pie-element/categorize",
6
+ "version": {
7
+ "requested": "latest"
8
+ }
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _index = _interopRequireDefault(require("../index"));
6
+ var _react2 = require("@testing-library/react");
7
+ var _styles = require("@mui/material/styles");
8
+ var _piePlayerEvents = require("@pie-framework/pie-player-events");
9
+ var _index2 = require("../categorize/index");
10
+ jest.mock('@pie-lib/math-rendering', () => ({
11
+ renderMath: jest.fn()
12
+ }));
13
+ const mockRender = jest.fn();
14
+ const mockUnmount = jest.fn();
15
+ jest.mock('react-dom/client', () => ({
16
+ createRoot: jest.fn(() => ({
17
+ render: mockRender,
18
+ unmount: mockUnmount
19
+ }))
20
+ }));
21
+ const theme = (0, _styles.createTheme)();
22
+ describe('categorize', () => {
23
+ describe('renders', () => {
24
+ const renderCategorize = props => {
25
+ const defaultProps = {
26
+ model: {
27
+ categories: [],
28
+ choices: [],
29
+ correctResponse: [],
30
+ ...props
31
+ },
32
+ session: {},
33
+ classes: {},
34
+ onAnswersChange: jest.fn(),
35
+ onShowCorrectToggle: jest.fn()
36
+ };
37
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
38
+ theme: theme
39
+ }, /*#__PURE__*/_react.default.createElement(_index2.Categorize, defaultProps)));
40
+ };
41
+ it('renders without crashing', () => {
42
+ const {
43
+ container
44
+ } = renderCategorize();
45
+ expect(container).toBeInTheDocument();
46
+ });
47
+ it('renders with rationale', () => {
48
+ const {
49
+ container
50
+ } = renderCategorize({
51
+ rationale: 'This is rationale'
52
+ });
53
+ expect(container).toBeInTheDocument();
54
+ });
55
+ it('renders with teacherInstructions', () => {
56
+ const {
57
+ container
58
+ } = renderCategorize({
59
+ teacherInstructions: 'These are teacher instructions'
60
+ });
61
+ expect(container).toBeInTheDocument();
62
+ });
63
+ });
64
+ describe('events', () => {
65
+ let el;
66
+ beforeEach(() => {
67
+ // Register custom element if not already registered
68
+ if (!customElements.get('categorize-el')) {
69
+ customElements.define('categorize-el', _index.default);
70
+ }
71
+
72
+ // Create element via createElement to properly initialize it
73
+ el = document.createElement('categorize-el');
74
+
75
+ // Mock dispatchEvent
76
+ el.dispatchEvent = jest.fn();
77
+ });
78
+ describe('model', () => {
79
+ it('dispatches model set event', () => {
80
+ el.model = {};
81
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.ModelSetEvent('categorize-el', false, true));
82
+ });
83
+ });
84
+ describe('changeAnswers', () => {
85
+ it('dispatches session changed event - add answer', () => {
86
+ el.model = {
87
+ responseAreasToBeFilled: 2,
88
+ hasUnplacedChoices: true
89
+ };
90
+ el.session = {
91
+ answers: []
92
+ };
93
+ el.changeAnswers([{
94
+ category: 'id-fruits',
95
+ choices: ['apple']
96
+ }]);
97
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', false));
98
+ el.changeAnswers([{
99
+ category: 'id-fruits',
100
+ choices: ['apple']
101
+ }, {
102
+ category: 'id-vegetables',
103
+ choices: ['carrot']
104
+ }]);
105
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', true));
106
+ });
107
+ it('dispatches session changed event - remove answer', () => {
108
+ el.model = {
109
+ responseAreasToBeFilled: 1
110
+ };
111
+ el.session = {
112
+ answers: [{
113
+ category: 'id-fruits',
114
+ choices: ['apple']
115
+ }]
116
+ };
117
+ el.changeAnswers([{
118
+ category: 'id-fruits',
119
+ choices: []
120
+ }]);
121
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', false));
122
+ });
123
+ it('dispatches session changed event - add/remove answer', () => {
124
+ el.model = {
125
+ responseAreasToBeFilled: 2,
126
+ hasUnplacedChoices: true
127
+ };
128
+ el.session = {
129
+ answers: [{
130
+ category: 'id-fruits',
131
+ choices: ['apple']
132
+ }, {
133
+ category: 'id-vegetables',
134
+ choices: ['carrot', 'onion']
135
+ }]
136
+ };
137
+ el.changeAnswers([{
138
+ category: 'id-fruits',
139
+ choices: ['apple']
140
+ }, {
141
+ category: 'id-vegetables',
142
+ choices: ['carrot']
143
+ }]);
144
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', true));
145
+ el.changeAnswers([{
146
+ category: 'id-fruits',
147
+ choices: ['apple']
148
+ }, {
149
+ category: 'id-vegetables',
150
+ choices: []
151
+ }]);
152
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', false));
153
+ el.changeAnswers([{
154
+ category: 'id-fruits',
155
+ choices: []
156
+ }, {
157
+ category: 'id-vegetables',
158
+ choices: []
159
+ }]);
160
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', false));
161
+ });
162
+ it('dispatches session changed event - add/remove answer - no unplaced choices', () => {
163
+ el.model = {
164
+ responseAreasToBeFilled: 2,
165
+ hasUnplacedChoices: false,
166
+ possibleResponses: [['apple', 'carrot', 'onion']]
167
+ };
168
+ el.session = {
169
+ answers: [{
170
+ category: 'id-fruits',
171
+ choices: ['apple']
172
+ }, {
173
+ category: 'id-vegetables',
174
+ choices: []
175
+ }]
176
+ };
177
+ el.changeAnswers([{
178
+ category: 'id-fruits',
179
+ choices: ['apple']
180
+ }, {
181
+ category: 'id-vegetables',
182
+ choices: ['carrot']
183
+ }]);
184
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', false));
185
+ el.changeAnswers([{
186
+ category: 'id-fruits',
187
+ choices: ['apple']
188
+ }, {
189
+ category: 'id-vegetables',
190
+ choices: ['carrot', 'onion']
191
+ }]);
192
+ expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('categorize-el', true));
193
+ });
194
+ });
195
+ });
196
+ });
197
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX3BpZVBsYXllckV2ZW50cyIsIl9pbmRleDIiLCJqZXN0IiwibW9jayIsInJlbmRlck1hdGgiLCJmbiIsIm1vY2tSZW5kZXIiLCJtb2NrVW5tb3VudCIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJ1bm1vdW50IiwidGhlbWUiLCJjcmVhdGVUaGVtZSIsImRlc2NyaWJlIiwicmVuZGVyQ2F0ZWdvcml6ZSIsInByb3BzIiwiZGVmYXVsdFByb3BzIiwibW9kZWwiLCJjYXRlZ29yaWVzIiwiY2hvaWNlcyIsImNvcnJlY3RSZXNwb25zZSIsInNlc3Npb24iLCJjbGFzc2VzIiwib25BbnN3ZXJzQ2hhbmdlIiwib25TaG93Q29ycmVjdFRvZ2dsZSIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwiVGhlbWVQcm92aWRlciIsIkNhdGVnb3JpemUiLCJpdCIsImNvbnRhaW5lciIsImV4cGVjdCIsInRvQmVJblRoZURvY3VtZW50IiwicmF0aW9uYWxlIiwidGVhY2hlckluc3RydWN0aW9ucyIsImVsIiwiYmVmb3JlRWFjaCIsImN1c3RvbUVsZW1lbnRzIiwiZ2V0IiwiZGVmaW5lIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwidG9CZUNhbGxlZFdpdGgiLCJNb2RlbFNldEV2ZW50IiwicmVzcG9uc2VBcmVhc1RvQmVGaWxsZWQiLCJoYXNVbnBsYWNlZENob2ljZXMiLCJhbnN3ZXJzIiwiY2hhbmdlQW5zd2VycyIsImNhdGVnb3J5IiwiU2Vzc2lvbkNoYW5nZWRFdmVudCIsInBvc3NpYmxlUmVzcG9uc2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9pbmRleC50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ2F0ZWdvcml6ZSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIsIGNyZWF0ZVRoZW1lIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgTW9kZWxTZXRFdmVudCwgU2Vzc2lvbkNoYW5nZWRFdmVudCB9IGZyb20gJ0BwaWUtZnJhbWV3b3JrL3BpZS1wbGF5ZXItZXZlbnRzJztcbmltcG9ydCB7IENhdGVnb3JpemUgYXMgVW5TdHlsZWRDYXRlZ29yaXplIH0gZnJvbSAnLi4vY2F0ZWdvcml6ZS9pbmRleCc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnLCAoKSA9PiAoeyByZW5kZXJNYXRoOiBqZXN0LmZuKCkgfSkpO1xuY29uc3QgbW9ja1JlbmRlciA9IGplc3QuZm4oKTtcbmNvbnN0IG1vY2tVbm1vdW50ID0gamVzdC5mbigpO1xuamVzdC5tb2NrKCdyZWFjdC1kb20vY2xpZW50JywgKCkgPT4gKHtcbiAgY3JlYXRlUm9vdDogamVzdC5mbigoKSA9PiAoe1xuICAgIHJlbmRlcjogbW9ja1JlbmRlcixcbiAgICB1bm1vdW50OiBtb2NrVW5tb3VudCxcbiAgfSkpLFxufSkpO1xuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5cbmRlc2NyaWJlKCdjYXRlZ29yaXplJywgKCkgPT4ge1xuICBkZXNjcmliZSgncmVuZGVycycsICgpID0+IHtcbiAgICBjb25zdCByZW5kZXJDYXRlZ29yaXplID0gKHByb3BzKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgY2F0ZWdvcmllczogW10sXG4gICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgY29ycmVjdFJlc3BvbnNlOiBbXSxcbiAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgfSxcbiAgICAgICAgc2Vzc2lvbjoge30sXG4gICAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgICBvbkFuc3dlcnNDaGFuZ2U6IGplc3QuZm4oKSxcbiAgICAgICAgb25TaG93Q29ycmVjdFRvZ2dsZTogamVzdC5mbigpLFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZW5kZXIoXG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgPFVuU3R5bGVkQ2F0ZWdvcml6ZSB7Li4uZGVmYXVsdFByb3BzfSAvPlxuICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNhdGVnb3JpemUoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIHJhdGlvbmFsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyfSA9IHJlbmRlckNhdGVnb3JpemUoeyByYXRpb25hbGU6ICdUaGlzIGlzIHJhdGlvbmFsZScgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCB0ZWFjaGVySW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNhdGVnb3JpemUoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnVGhlc2UgYXJlIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJyB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdldmVudHMnLCAoKSA9PiB7XG4gICAgbGV0IGVsO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAvLyBSZWdpc3RlciBjdXN0b20gZWxlbWVudCBpZiBub3QgYWxyZWFkeSByZWdpc3RlcmVkXG4gICAgICBpZiAoIWN1c3RvbUVsZW1lbnRzLmdldCgnY2F0ZWdvcml6ZS1lbCcpKSB7XG4gICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnY2F0ZWdvcml6ZS1lbCcsIENhdGVnb3JpemUpO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgZWxlbWVudCB2aWEgY3JlYXRlRWxlbWVudCB0byBwcm9wZXJseSBpbml0aWFsaXplIGl0XG4gICAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhdGVnb3JpemUtZWwnKTtcblxuICAgICAgLy8gTW9jayBkaXNwYXRjaEV2ZW50XG4gICAgICBlbC5kaXNwYXRjaEV2ZW50ID0gamVzdC5mbigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ21vZGVsJywgKCkgPT4ge1xuICAgICAgaXQoJ2Rpc3BhdGNoZXMgbW9kZWwgc2V0IGV2ZW50JywgKCkgPT4ge1xuICAgICAgICBlbC5tb2RlbCA9IHt9O1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IE1vZGVsU2V0RXZlbnQoJ2NhdGVnb3JpemUtZWwnLCBmYWxzZSwgdHJ1ZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlQW5zd2VycycsICgpID0+IHtcbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIGFkZCBhbnN3ZXInLCAoKSA9PiB7XG4gICAgICAgIGVsLm1vZGVsID0ge1xuICAgICAgICAgIHJlc3BvbnNlQXJlYXNUb0JlRmlsbGVkOiAyLFxuICAgICAgICAgIGhhc1VucGxhY2VkQ2hvaWNlczogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgYW5zd2VyczogW10gfTtcbiAgICAgICAgZWwuY2hhbmdlQW5zd2VycyhbeyBjYXRlZ29yeTogJ2lkLWZydWl0cycsIGNob2ljZXM6IFsnYXBwbGUnXSB9XSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnY2F0ZWdvcml6ZS1lbCcsIGZhbHNlKSk7XG4gICAgICAgIGVsLmNoYW5nZUFuc3dlcnMoW1xuICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfSxcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtdmVnZXRhYmxlcycsIGNob2ljZXM6IFsnY2Fycm90J10gfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnY2F0ZWdvcml6ZS1lbCcsIHRydWUpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGlzcGF0Y2hlcyBzZXNzaW9uIGNoYW5nZWQgZXZlbnQgLSByZW1vdmUgYW5zd2VyJywgKCkgPT4ge1xuICAgICAgICBlbC5tb2RlbCA9IHtcbiAgICAgICAgICByZXNwb25zZUFyZWFzVG9CZUZpbGxlZDogMSxcbiAgICAgICAgfTtcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgYW5zd2VyczogW3sgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfV0gfTtcbiAgICAgICAgZWwuY2hhbmdlQW5zd2VycyhbeyBjYXRlZ29yeTogJ2lkLWZydWl0cycsIGNob2ljZXM6IFtdIH1dKTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdjYXRlZ29yaXplLWVsJywgZmFsc2UpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGlzcGF0Y2hlcyBzZXNzaW9uIGNoYW5nZWQgZXZlbnQgLSBhZGQvcmVtb3ZlIGFuc3dlcicsICgpID0+IHtcbiAgICAgICAgZWwubW9kZWwgPSB7XG4gICAgICAgICAgcmVzcG9uc2VBcmVhc1RvQmVGaWxsZWQ6IDIsXG4gICAgICAgICAgaGFzVW5wbGFjZWRDaG9pY2VzOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICBlbC5zZXNzaW9uID0ge1xuICAgICAgICAgIGFuc3dlcnM6IFtcbiAgICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfSxcbiAgICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC12ZWdldGFibGVzJywgY2hvaWNlczogWydjYXJyb3QnLCAnb25pb24nXSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIGVsLmNoYW5nZUFuc3dlcnMoW1xuICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfSxcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtdmVnZXRhYmxlcycsIGNob2ljZXM6IFsnY2Fycm90J10gfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnY2F0ZWdvcml6ZS1lbCcsIHRydWUpKTtcblxuICAgICAgICBlbC5jaGFuZ2VBbnN3ZXJzKFtcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtZnJ1aXRzJywgY2hvaWNlczogWydhcHBsZSddIH0sXG4gICAgICAgICAgeyBjYXRlZ29yeTogJ2lkLXZlZ2V0YWJsZXMnLCBjaG9pY2VzOiBbXSB9LFxuICAgICAgICBdKTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdjYXRlZ29yaXplLWVsJywgZmFsc2UpKTtcblxuICAgICAgICBlbC5jaGFuZ2VBbnN3ZXJzKFtcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtZnJ1aXRzJywgY2hvaWNlczogW10gfSxcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtdmVnZXRhYmxlcycsIGNob2ljZXM6IFtdIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoJ2NhdGVnb3JpemUtZWwnLCBmYWxzZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIGFkZC9yZW1vdmUgYW5zd2VyIC0gbm8gdW5wbGFjZWQgY2hvaWNlcycsICgpID0+IHtcbiAgICAgICAgZWwubW9kZWwgPSB7XG4gICAgICAgICAgcmVzcG9uc2VBcmVhc1RvQmVGaWxsZWQ6IDIsXG4gICAgICAgICAgaGFzVW5wbGFjZWRDaG9pY2VzOiBmYWxzZSxcbiAgICAgICAgICBwb3NzaWJsZVJlc3BvbnNlczogW1snYXBwbGUnLCAnY2Fycm90JywgJ29uaW9uJ11dLFxuICAgICAgICB9O1xuICAgICAgICBlbC5zZXNzaW9uID0ge1xuICAgICAgICAgIGFuc3dlcnM6IFtcbiAgICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfSxcbiAgICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC12ZWdldGFibGVzJywgY2hvaWNlczogW10gfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuXG4gICAgICAgIGVsLmNoYW5nZUFuc3dlcnMoW1xuICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC1mcnVpdHMnLCBjaG9pY2VzOiBbJ2FwcGxlJ10gfSxcbiAgICAgICAgICB7IGNhdGVnb3J5OiAnaWQtdmVnZXRhYmxlcycsIGNob2ljZXM6IFsnY2Fycm90J10gfSxcbiAgICAgICAgXSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnY2F0ZWdvcml6ZS1lbCcsIGZhbHNlKSk7XG5cbiAgICAgICAgZWwuY2hhbmdlQW5zd2VycyhbXG4gICAgICAgICAgeyBjYXRlZ29yeTogJ2lkLWZydWl0cycsIGNob2ljZXM6IFsnYXBwbGUnXSB9LFxuICAgICAgICAgIHsgY2F0ZWdvcnk6ICdpZC12ZWdldGFibGVzJywgY2hvaWNlczogWydjYXJyb3QnLCAnb25pb24nXSB9LFxuICAgICAgICBdKTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdjYXRlZ29yaXplLWVsJywgdHJ1ZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFFQU0sSUFBSSxDQUFDQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsT0FBTztFQUFFQyxVQUFVLEVBQUVGLElBQUksQ0FBQ0csRUFBRSxDQUFDO0FBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTUMsVUFBVSxHQUFHSixJQUFJLENBQUNHLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLE1BQU1FLFdBQVcsR0FBR0wsSUFBSSxDQUFDRyxFQUFFLENBQUMsQ0FBQztBQUM3QkgsSUFBSSxDQUFDQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsT0FBTztFQUNuQ0ssVUFBVSxFQUFFTixJQUFJLENBQUNHLEVBQUUsQ0FBQyxPQUFPO0lBQ3pCSSxNQUFNLEVBQUVILFVBQVU7SUFDbEJJLE9BQU8sRUFBRUg7RUFDWCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU1JLEtBQUssR0FBRyxJQUFBQyxtQkFBVyxFQUFDLENBQUM7QUFF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
@@ -0,0 +1,138 @@
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 _styles = require("@mui/material/styles");
7
+ var _categories = require("../categories");
8
+ jest.mock('../category', () => ({
9
+ __esModule: true,
10
+ default: ({
11
+ id,
12
+ label
13
+ }) => /*#__PURE__*/_react.default.createElement("div", {
14
+ "data-testid": `category-${id}`
15
+ }, label),
16
+ CategoryType: {}
17
+ }));
18
+ jest.mock('../grid-content', () => ({
19
+ __esModule: true,
20
+ default: ({
21
+ children,
22
+ columns
23
+ }) => /*#__PURE__*/_react.default.createElement("div", {
24
+ "data-testid": "grid-content",
25
+ "data-columns": columns
26
+ }, children)
27
+ }));
28
+ const theme = (0, _styles.createTheme)();
29
+ describe('Categories', () => {
30
+ const renderCategories = extras => {
31
+ const defaults = {
32
+ classes: {},
33
+ categories: [{
34
+ choices: [],
35
+ id: '1',
36
+ label: 'Category One'
37
+ }],
38
+ onDropChoice: jest.fn(),
39
+ onRemoveChoice: jest.fn(),
40
+ id: '1',
41
+ label: 'Category Label',
42
+ grid: {
43
+ columns: 1,
44
+ rows: 1
45
+ }
46
+ };
47
+ const props = {
48
+ ...defaults,
49
+ ...extras
50
+ };
51
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
52
+ theme: theme
53
+ }, /*#__PURE__*/_react.default.createElement(_categories.Categories, props)));
54
+ };
55
+ describe('rendering', () => {
56
+ it('renders without crashing', () => {
57
+ const {
58
+ container
59
+ } = renderCategories();
60
+ expect(container).toBeInTheDocument();
61
+ });
62
+ it('renders when disabled', () => {
63
+ const {
64
+ container
65
+ } = renderCategories({
66
+ disabled: true
67
+ });
68
+ expect(container).toBeInTheDocument();
69
+ });
70
+ it('renders the grid content wrapper', () => {
71
+ renderCategories();
72
+ expect(_react2.screen.getByTestId('grid-content')).toBeInTheDocument();
73
+ });
74
+ });
75
+ describe('category labels', () => {
76
+ it('displays category labels', () => {
77
+ renderCategories({
78
+ categories: [{
79
+ id: '1',
80
+ label: 'First Category',
81
+ choices: []
82
+ }, {
83
+ id: '2',
84
+ label: 'Second Category',
85
+ choices: []
86
+ }]
87
+ });
88
+ // Multiple elements may contain the same text (label + category mock)
89
+ expect(_react2.screen.getAllByText('First Category').length).toBeGreaterThan(0);
90
+ expect(_react2.screen.getAllByText('Second Category').length).toBeGreaterThan(0);
91
+ });
92
+ });
93
+ describe('categories per row', () => {
94
+ it('respects categoriesPerRow setting', () => {
95
+ renderCategories({
96
+ categories: [{
97
+ id: '1',
98
+ label: 'Cat 1',
99
+ choices: []
100
+ }, {
101
+ id: '2',
102
+ label: 'Cat 2',
103
+ choices: []
104
+ }],
105
+ model: {
106
+ categoriesPerRow: 2
107
+ }
108
+ });
109
+ const grid = _react2.screen.getByTestId('grid-content');
110
+ expect(grid).toHaveAttribute('data-columns', '2');
111
+ });
112
+ });
113
+ describe('row labels', () => {
114
+ it('renders row labels when provided', () => {
115
+ renderCategories({
116
+ categories: [{
117
+ id: '1',
118
+ label: 'Category',
119
+ choices: []
120
+ }],
121
+ rowLabels: ['Row 1 Label']
122
+ });
123
+ expect(_react2.screen.getByText('Row 1 Label')).toBeInTheDocument();
124
+ });
125
+ it('does not render row labels when empty', () => {
126
+ renderCategories({
127
+ categories: [{
128
+ id: '1',
129
+ label: 'Category',
130
+ choices: []
131
+ }],
132
+ rowLabels: []
133
+ });
134
+ expect(_react2.screen.queryByText('Row 1 Label')).not.toBeInTheDocument();
135
+ });
136
+ });
137
+ });
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2NhdGVnb3JpZXMiLCJqZXN0IiwibW9jayIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaWQiLCJsYWJlbCIsImNyZWF0ZUVsZW1lbnQiLCJDYXRlZ29yeVR5cGUiLCJjaGlsZHJlbiIsImNvbHVtbnMiLCJ0aGVtZSIsImNyZWF0ZVRoZW1lIiwiZGVzY3JpYmUiLCJyZW5kZXJDYXRlZ29yaWVzIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2F0ZWdvcmllcyIsImNob2ljZXMiLCJvbkRyb3BDaG9pY2UiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwiZ3JpZCIsInJvd3MiLCJwcm9wcyIsInJlbmRlciIsIlRoZW1lUHJvdmlkZXIiLCJDYXRlZ29yaWVzIiwiaXQiLCJjb250YWluZXIiLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsImRpc2FibGVkIiwic2NyZWVuIiwiZ2V0QnlUZXN0SWQiLCJnZXRBbGxCeVRleHQiLCJsZW5ndGgiLCJ0b0JlR3JlYXRlclRoYW4iLCJtb2RlbCIsImNhdGVnb3JpZXNQZXJSb3ciLCJ0b0hhdmVBdHRyaWJ1dGUiLCJyb3dMYWJlbHMiLCJnZXRCeVRleHQiLCJxdWVyeUJ5VGV4dCIsIm5vdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXRlZ29yaXplL19fdGVzdHNfXy9jYXRlZ29yaWVzLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBDYXRlZ29yaWVzIH0gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5cbmplc3QubW9jaygnLi4vY2F0ZWdvcnknLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBpZCwgbGFiZWwgfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD17YGNhdGVnb3J5LSR7aWR9YH0+e2xhYmVsfTwvZGl2PixcbiAgQ2F0ZWdvcnlUeXBlOiB7fSxcbn0pKTtcblxuamVzdC5tb2NrKCcuLi9ncmlkLWNvbnRlbnQnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaGlsZHJlbiwgY29sdW1ucyB9KSA9PiAoXG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImdyaWQtY29udGVudFwiIGRhdGEtY29sdW1ucz17Y29sdW1uc30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICksXG59KSk7XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoKTtcblxuZGVzY3JpYmUoJ0NhdGVnb3JpZXMnLCAoKSA9PiB7XG4gIGNvbnN0IHJlbmRlckNhdGVnb3JpZXMgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNhdGVnb3JpZXM6IFt7IGNob2ljZXM6IFtdLCBpZDogJzEnLCBsYWJlbDogJ0NhdGVnb3J5IE9uZScgfV0sXG4gICAgICBvbkRyb3BDaG9pY2U6IGplc3QuZm4oKSxcbiAgICAgIG9uUmVtb3ZlQ2hvaWNlOiBqZXN0LmZuKCksXG4gICAgICBpZDogJzEnLFxuICAgICAgbGFiZWw6ICdDYXRlZ29yeSBMYWJlbCcsXG4gICAgICBncmlkOiB7IGNvbHVtbnM6IDEsIHJvd3M6IDEgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcbiAgICByZXR1cm4gcmVuZGVyKFxuICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgICAgPENhdGVnb3JpZXMgey4uLnByb3BzfSAvPlxuICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNhdGVnb3JpZXMoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNhdGVnb3JpZXMoeyBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB0aGUgZ3JpZCBjb250ZW50IHdyYXBwZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXJDYXRlZ29yaWVzKCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdncmlkLWNvbnRlbnQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NhdGVnb3J5IGxhYmVscycsICgpID0+IHtcbiAgICBpdCgnZGlzcGxheXMgY2F0ZWdvcnkgbGFiZWxzJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ2F0ZWdvcmllcyh7XG4gICAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAgICB7IGlkOiAnMScsIGxhYmVsOiAnRmlyc3QgQ2F0ZWdvcnknLCBjaG9pY2VzOiBbXSB9LFxuICAgICAgICAgIHsgaWQ6ICcyJywgbGFiZWw6ICdTZWNvbmQgQ2F0ZWdvcnknLCBjaG9pY2VzOiBbXSB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgICAvLyBNdWx0aXBsZSBlbGVtZW50cyBtYXkgY29udGFpbiB0aGUgc2FtZSB0ZXh0IChsYWJlbCArIGNhdGVnb3J5IG1vY2spXG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEFsbEJ5VGV4dCgnRmlyc3QgQ2F0ZWdvcnknKS5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QWxsQnlUZXh0KCdTZWNvbmQgQ2F0ZWdvcnknKS5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NhdGVnb3JpZXMgcGVyIHJvdycsICgpID0+IHtcbiAgICBpdCgncmVzcGVjdHMgY2F0ZWdvcmllc1BlclJvdyBzZXR0aW5nJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ2F0ZWdvcmllcyh7XG4gICAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAgICB7IGlkOiAnMScsIGxhYmVsOiAnQ2F0IDEnLCBjaG9pY2VzOiBbXSB9LFxuICAgICAgICAgIHsgaWQ6ICcyJywgbGFiZWw6ICdDYXQgMicsIGNob2ljZXM6IFtdIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG1vZGVsOiB7IGNhdGVnb3JpZXNQZXJSb3c6IDIgfSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZ3JpZCA9IHNjcmVlbi5nZXRCeVRlc3RJZCgnZ3JpZC1jb250ZW50Jyk7XG4gICAgICBleHBlY3QoZ3JpZCkudG9IYXZlQXR0cmlidXRlKCdkYXRhLWNvbHVtbnMnLCAnMicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncm93IGxhYmVscycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyByb3cgbGFiZWxzIHdoZW4gcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDYXRlZ29yaWVzKHtcbiAgICAgICAgY2F0ZWdvcmllczogW3sgaWQ6ICcxJywgbGFiZWw6ICdDYXRlZ29yeScsIGNob2ljZXM6IFtdIH1dLFxuICAgICAgICByb3dMYWJlbHM6IFsnUm93IDEgTGFiZWwnXSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoJ1JvdyAxIExhYmVsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVuZGVyIHJvdyBsYWJlbHMgd2hlbiBlbXB0eScsICgpID0+IHtcbiAgICAgIHJlbmRlckNhdGVnb3JpZXMoe1xuICAgICAgICBjYXRlZ29yaWVzOiBbeyBpZDogJzEnLCBsYWJlbDogJ0NhdGVnb3J5JywgY2hvaWNlczogW10gfV0sXG4gICAgICAgIHJvd0xhYmVsczogW10sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRleHQoJ1JvdyAxIExhYmVsJykpLm5vdC50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFFQUksSUFBSSxDQUFDQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU87RUFDOUJDLFVBQVUsRUFBRSxJQUFJO0VBQ2hCQyxPQUFPLEVBQUVBLENBQUM7SUFBRUMsRUFBRTtJQUFFQztFQUFNLENBQUMsa0JBQUtYLE1BQUEsQ0FBQVMsT0FBQSxDQUFBRyxhQUFBO0lBQUssZUFBYSxZQUFZRixFQUFFO0VBQUcsR0FBRUMsS0FBVyxDQUFDO0VBQzdFRSxZQUFZLEVBQUUsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQztBQUVIUCxJQUFJLENBQUNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPO0VBQ2xDQyxVQUFVLEVBQUUsSUFBSTtFQUNoQkMsT0FBTyxFQUFFQSxDQUFDO0lBQUVLLFFBQVE7SUFBRUM7RUFBUSxDQUFDLGtCQUM3QmYsTUFBQSxDQUFBUyxPQUFBLENBQUFHLGFBQUE7SUFBSyxlQUFZLGNBQWM7SUFBQyxnQkFBY0c7RUFBUSxHQUNuREQsUUFDRTtBQUVULENB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QUMsbUNBQW1DLEVBQUUsTUFBTTtNQUM1Q2YsZ0JBQWdCLENBQUM7UUFDZkksVUFBVSxFQUFFLENBQ1Y7VUFBRWIsRUFBRSxFQUFFLEdBQUc7VUFBRUMsS0FBSyxFQUFFLE9BQU87VUFBRWEsT0FBTyxFQUFFO1FBQUcsQ0FBQyxFQUN4QztVQUFFZCxFQUFFLEVBQUUsR0FBRztVQUFFQyxLQUFLLEVBQUUsT0FBTztVQUFFYSxPQUFPLEVBQUU7UUFBRyxDQUFDLENBQ3pDO1FBQ0RvQixLQUFLLEVBQUU7VUFBRUMsZ0JBQWdCLEVBQUU7UUFBRTtNQUMvQixDQUFDLENBQUM7TUFDRixNQUFNakIsSUFBSSxHQUFHVyxjQUFNLENBQUNDLFdBQVcsQ0FBQyxjQUFjLENBQUM7TUFDL0NKLE1BQU0sQ0FBQ1IsSUFBSSxDQUFDLENBQUNrQixlQUFlLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRjVCLFFBQVEsQ0FBQyxZQUFZLEVBQUUsTUFBTTtJQUMzQmdCLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxNQUFNO01BQzNDZixnQkFBZ0IsQ0FBQztRQUNmSSxVQUFVLEVBQUUsQ0FBQztVQUFFYixFQUFFLEVBQUUsR0FBRztVQUFFQyxLQUFLLEVBQUUsVUFBVTtVQUFFYSxPQUFPLEVBQUU7UUFBRyxDQUFDLENBQUM7UUFDekR1QixTQUFTLEVBQUUsQ0FBQyxhQUFhO01BQzNCLENBQUMsQ0FBQztNQUNGWCxNQUFNLENBQUNHLGNBQU0sQ0FBQ1MsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUNYLGlCQUFpQixDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDO0lBRUZILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxNQUFNO01BQ2hEZixnQkFBZ0IsQ0FBQztRQUNmSSxVQUFVLEVBQUUsQ0FBQztVQUFFYixFQUFFLEVBQUUsR0FBRztVQUFFQyxLQUFLLEVBQUUsVUFBVTtVQUFFYSxPQUFPLEVBQUU7UUFBRyxDQUFDLENBQUM7UUFDekR1QixTQUFTLEVBQUU7TUFDYixDQUFDLENBQUM7TUFDRlgsTUFBTSxDQUFDRyxjQUFNLENBQUNVLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDQyxHQUFHLENBQUNiLGlCQUFpQixDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,137 @@
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 _styles = require("@mui/material/styles");
7
+ var _category = require("../category");
8
+ jest.mock('../droppable-placeholder', () => ({
9
+ __esModule: true,
10
+ default: ({
11
+ children,
12
+ id,
13
+ correct
14
+ }) => /*#__PURE__*/_react.default.createElement("div", {
15
+ "data-testid": `placeholder-${id}`,
16
+ "data-correct": correct !== undefined ? String(correct) : undefined
17
+ }, children)
18
+ }));
19
+ jest.mock('../choice', () => ({
20
+ __esModule: true,
21
+ default: ({
22
+ id,
23
+ label,
24
+ categoryId
25
+ }) => /*#__PURE__*/_react.default.createElement("div", {
26
+ "data-testid": `choice-${id}`,
27
+ "data-category": categoryId
28
+ }, label)
29
+ }));
30
+ const theme = (0, _styles.createTheme)();
31
+ describe('Category', () => {
32
+ const renderCategory = extras => {
33
+ const defaults = {
34
+ classes: {
35
+ label: 'label',
36
+ incorrect: 'incorrect',
37
+ placeholder: 'placeholder',
38
+ category: 'category'
39
+ },
40
+ choices: [],
41
+ id: 'category-1',
42
+ label: 'Category Label',
43
+ grid: {
44
+ columns: 1,
45
+ rows: 1
46
+ }
47
+ };
48
+ const props = {
49
+ ...defaults,
50
+ ...extras
51
+ };
52
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
53
+ theme: theme
54
+ }, /*#__PURE__*/_react.default.createElement(_category.Category, props)));
55
+ };
56
+ describe('rendering', () => {
57
+ it('renders without crashing', () => {
58
+ const {
59
+ container
60
+ } = renderCategory();
61
+ expect(container).toBeInTheDocument();
62
+ });
63
+ it('renders the placeholder with correct id', () => {
64
+ renderCategory({
65
+ id: 'test-category'
66
+ });
67
+ expect(_react2.screen.getByTestId('placeholder-test-category')).toBeInTheDocument();
68
+ });
69
+ it('renders when disabled', () => {
70
+ const {
71
+ container
72
+ } = renderCategory({
73
+ disabled: true
74
+ });
75
+ expect(container).toBeInTheDocument();
76
+ });
77
+ });
78
+ describe('choices rendering', () => {
79
+ it('renders choices within the category', () => {
80
+ renderCategory({
81
+ id: 'cat-1',
82
+ choices: [{
83
+ id: 'choice-1',
84
+ label: 'First Choice'
85
+ }, {
86
+ id: 'choice-2',
87
+ label: 'Second Choice'
88
+ }]
89
+ });
90
+ expect(_react2.screen.getByTestId('choice-choice-1')).toBeInTheDocument();
91
+ expect(_react2.screen.getByTestId('choice-choice-2')).toBeInTheDocument();
92
+ expect(_react2.screen.getByText('First Choice')).toBeInTheDocument();
93
+ expect(_react2.screen.getByText('Second Choice')).toBeInTheDocument();
94
+ });
95
+ it('renders empty category when no choices', () => {
96
+ renderCategory({
97
+ choices: []
98
+ });
99
+ expect(_react2.screen.queryByTestId(/^choice-/)).not.toBeInTheDocument();
100
+ });
101
+ });
102
+ describe('correctness state', () => {
103
+ // Note: StyledPlaceHolder uses shouldForwardProp to prevent 'correct' from being
104
+ // forwarded to the underlying component - it's only used for styling.
105
+ // We test that rendering doesn't crash with different correctness values.
106
+ it('renders correctly when correct=false (incorrect answer)', () => {
107
+ const {
108
+ container
109
+ } = renderCategory({
110
+ id: 'cat-1',
111
+ correct: false
112
+ });
113
+ expect(container).toBeInTheDocument();
114
+ expect(_react2.screen.getByTestId('placeholder-cat-1')).toBeInTheDocument();
115
+ });
116
+ it('renders correctly when correct=true (correct answer)', () => {
117
+ const {
118
+ container
119
+ } = renderCategory({
120
+ id: 'cat-1',
121
+ correct: true
122
+ });
123
+ expect(container).toBeInTheDocument();
124
+ expect(_react2.screen.getByTestId('placeholder-cat-1')).toBeInTheDocument();
125
+ });
126
+ it('renders correctly when correct is undefined', () => {
127
+ const {
128
+ container
129
+ } = renderCategory({
130
+ id: 'cat-1'
131
+ });
132
+ expect(container).toBeInTheDocument();
133
+ expect(_react2.screen.getByTestId('placeholder-cat-1')).toBeInTheDocument();
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2NhdGVnb3J5IiwiamVzdCIsIm1vY2siLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNoaWxkcmVuIiwiaWQiLCJjb3JyZWN0IiwiY3JlYXRlRWxlbWVudCIsInVuZGVmaW5lZCIsIlN0cmluZyIsImxhYmVsIiwiY2F0ZWdvcnlJZCIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsInJlbmRlckNhdGVnb3J5IiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiaW5jb3JyZWN0IiwicGxhY2Vob2xkZXIiLCJjYXRlZ29yeSIsImNob2ljZXMiLCJncmlkIiwiY29sdW1ucyIsInJvd3MiLCJwcm9wcyIsInJlbmRlciIsIlRoZW1lUHJvdmlkZXIiLCJDYXRlZ29yeSIsIml0IiwiY29udGFpbmVyIiwiZXhwZWN0IiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRlc3RJZCIsImRpc2FibGVkIiwiZ2V0QnlUZXh0IiwicXVlcnlCeVRlc3RJZCIsIm5vdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXRlZ29yaXplL19fdGVzdHNfXy9jYXRlZ29yeS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIsIGNyZWF0ZVRoZW1lIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRlZ29yeSc7XG5cbmplc3QubW9jaygnLi4vZHJvcHBhYmxlLXBsYWNlaG9sZGVyJywgKCkgPT4gKHtcbiAgX19lc01vZHVsZTogdHJ1ZSxcbiAgZGVmYXVsdDogKHsgY2hpbGRyZW4sIGlkLCBjb3JyZWN0IH0pID0+IChcbiAgICA8ZGl2IFxuICAgICAgZGF0YS10ZXN0aWQ9e2BwbGFjZWhvbGRlci0ke2lkfWB9IFxuICAgICAgZGF0YS1jb3JyZWN0PXtjb3JyZWN0ICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoY29ycmVjdCkgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApLFxufSkpO1xuamVzdC5tb2NrKCcuLi9jaG9pY2UnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBpZCwgbGFiZWwsIGNhdGVnb3J5SWQgfSkgPT4gKFxuICAgIDxkaXYgZGF0YS10ZXN0aWQ9e2BjaG9pY2UtJHtpZH1gfSBkYXRhLWNhdGVnb3J5PXtjYXRlZ29yeUlkfT5cbiAgICAgIHtsYWJlbH1cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSgpO1xuXG5kZXNjcmliZSgnQ2F0ZWdvcnknLCAoKSA9PiB7XG4gIGNvbnN0IHJlbmRlckNhdGVnb3J5ID0gKGV4dHJhcykgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgY2xhc3Nlczoge1xuICAgICAgICBsYWJlbDogJ2xhYmVsJyxcbiAgICAgICAgaW5jb3JyZWN0OiAnaW5jb3JyZWN0JyxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgIGNhdGVnb3J5OiAnY2F0ZWdvcnknLFxuICAgICAgfSxcbiAgICAgIGNob2ljZXM6IFtdLFxuICAgICAgaWQ6ICdjYXRlZ29yeS0xJyxcbiAgICAgIGxhYmVsOiAnQ2F0ZWdvcnkgTGFiZWwnLFxuICAgICAgZ3JpZDogeyBjb2x1bW5zOiAxLCByb3dzOiAxIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHJlbmRlcihcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIDxDYXRlZ29yeSB7Li4ucHJvcHN9IC8+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2F0ZWdvcnkoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB0aGUgcGxhY2Vob2xkZXIgd2l0aCBjb3JyZWN0IGlkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ2F0ZWdvcnkoeyBpZDogJ3Rlc3QtY2F0ZWdvcnknIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgncGxhY2Vob2xkZXItdGVzdC1jYXRlZ29yeScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2hlbiBkaXNhYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDYXRlZ29yeSh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Nob2ljZXMgcmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIGNob2ljZXMgd2l0aGluIHRoZSBjYXRlZ29yeScsICgpID0+IHtcbiAgICAgIHJlbmRlckNhdGVnb3J5KHtcbiAgICAgICAgaWQ6ICdjYXQtMScsXG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IGlkOiAnY2hvaWNlLTEnLCBsYWJlbDogJ0ZpcnN0IENob2ljZScgfSxcbiAgICAgICAgICB7IGlkOiAnY2hvaWNlLTInLCBsYWJlbDogJ1NlY29uZCBDaG9pY2UnIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXN0SWQoJ2Nob2ljZS1jaG9pY2UtMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRlc3RJZCgnY2hvaWNlLWNob2ljZS0yJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnRmlyc3QgQ2hvaWNlJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnU2Vjb25kIENob2ljZScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgZW1wdHkgY2F0ZWdvcnkgd2hlbiBubyBjaG9pY2VzJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ2F0ZWdvcnkoeyBjaG9pY2VzOiBbXSB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4ucXVlcnlCeVRlc3RJZCgvXmNob2ljZS0vKSkubm90LnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb3JyZWN0bmVzcyBzdGF0ZScsICgpID0+IHtcbiAgICAvLyBOb3RlOiBTdHlsZWRQbGFjZUhvbGRlciB1c2VzIHNob3VsZEZvcndhcmRQcm9wIHRvIHByZXZlbnQgJ2NvcnJlY3QnIGZyb20gYmVpbmdcbiAgICAvLyBmb3J3YXJkZWQgdG8gdGhlIHVuZGVybHlpbmcgY29tcG9uZW50IC0gaXQncyBvbmx5IHVzZWQgZm9yIHN0eWxpbmcuXG4gICAgLy8gV2UgdGVzdCB0aGF0IHJlbmRlcmluZyBkb2Vzbid0IGNyYXNoIHdpdGggZGlmZmVyZW50IGNvcnJlY3RuZXNzIHZhbHVlcy5cbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2hlbiBjb3JyZWN0PWZhbHNlIChpbmNvcnJlY3QgYW5zd2VyKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDYXRlZ29yeSh7IGlkOiAnY2F0LTEnLCBjb3JyZWN0OiBmYWxzZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdwbGFjZWhvbGRlci1jYXQtMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdoZW4gY29ycmVjdD10cnVlIChjb3JyZWN0IGFuc3dlciknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2F0ZWdvcnkoeyBpZDogJ2NhdC0xJywgY29ycmVjdDogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdwbGFjZWhvbGRlci1jYXQtMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdoZW4gY29ycmVjdCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2F0ZWdvcnkoeyBpZDogJ2NhdC0xJyB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGVzdElkKCdwbGFjZWhvbGRlci1jYXQtMScpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFFQUksSUFBSSxDQUFDQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsT0FBTztFQUMzQ0MsVUFBVSxFQUFFLElBQUk7RUFDaEJDLE9BQU8sRUFBRUEsQ0FBQztJQUFFQyxRQUFRO0lBQUVDLEVBQUU7SUFBRUM7RUFBUSxDQUFDLGtCQUNqQ1osTUFBQSxDQUFBUyxPQUFBLENBQUFJLGFBQUE7SUFDRSxlQUFhLGVBQWVGLEVBQUUsRUFBRztJQUNqQyxnQkFBY0MsT0FBTyxLQUFLRSxTQUFTLEdBQUdDLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDLEdBQUdFO0VBQVUsR0FFakVKLFFBQ0U7QUFFVCxDQUFDLENBQUMsQ0FBQztBQUNISixJQUFJLENBQUNDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTztFQUM1QkMsVUFBVSxFQUFFLElBQUk7RUFDaEJDLE9BQU8sRUFBRUEsQ0FBQztJQUFFRSxFQUFFO0lBQUVLLEtBQUs7SUFBRUM7RUFBVyxDQUFDLGtCQUNqQ2pCLE1BQUEsQ0FBQVMsT0FBQSxDQUFBSSxhQUFBO0lBQUssZUFBYSxVQUFVRixFQUFFLEVBQUc7SUFBQyxpQkFBZU07RUFBVyxHQUN6REQsS0FDRTtBQUVULENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTUUsS0FBSyxHQUFHLElBQUFDLG1CQUFXLEVBQUMsQ0FBQztBQUUzQkMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNO0VBQ3pCLE1BQU1DLGNBQWMsR0FBSUMsTUFBTSxJQUFLO0lBQ2pDLE1BQU1DLFFBQVEsR0FBRztNQUNmQyxPQUFPLEVBQUU7UUFDUFIsS0FBSyxFQUFFLE9BQU87UUFDZFMsU0FBUyxFQUFFLFdBQVc7UUFDdEJDLFdBQVcsRUFBRSxhQUFhO1FBQzFCQyxRQUFRLEVBQUU7TUFDWixDQUFDO01BQ0RDLE9BQU8sRUFBRSxFQUFFO01BQ1hqQixFQUFFLEVBQUUsWUFBWTtNQUNoQkssS0FBSyxFQUFFLGdCQUFnQjtNQUN2QmEsSUFBSSxFQUFFO1FBQUVDLE9BQU8sRUFBRSxDQUFDO1FBQUVDLElBQUksRUFBRTtNQUFFO0lBQzlCLENBQUM7SUFFRCxNQUFNQyxLQUFLLEdBQUc7TUFBRSxHQUFHVCxRQUFRO01BQUUsR0FBR0Q7SUFBTyxDQUFDO0lBQ3hDLE9BQU8sSUFBQVcsY0FBTSxlQUNYakMsTUFBQSxDQUFBUyxPQUFBLENBQUFJLGFBQUEsQ0FBQ1QsT0FBQSxDQUFBOEIsYUFBYTtNQUFDaEIsS0FBSyxFQUFFQTtJQUFNLGdCQUMxQmxCLE1BQUEsQ0FBQVMsT0FBQSxDQUFBSSxhQUFBLENBQUNSLFNBQUEsQ0FBQThCLFFBQVEsRUFBS0gsS0FBUSxDQUNULENBQ2pCLENBQUM7RUFDSCxDQUFDO0VBRURaLFFBQVEsQ0FBQyxXQUFXLEVBQUUsTUFBTTtJQUMxQmdCLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxNQUFNO01BQ25DLE1BQU07UUFBRUM7TUFBVSxDQUFDLEdBQUdoQixjQUFjLENBQUMsQ0FBQztNQUN0Q2lCLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0lBRUZILEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxNQUFNO01BQ2xEZixjQUFjLENBQUM7UUFBRVYsRUFBRSxFQUFFO01BQWdCLENBQUMsQ0FBQztNQUN2QzJCLE1BQU0sQ0FBQ0UsY0FBTSxDQUFDQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQztJQUVGSCxFQUFFLENBQUMsdUJBQXVCLEVBQUUsTUFBTTtNQUNoQyxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHaEIsY0FBYyxDQUFDO1FBQUVxQixRQUFRLEVBQUU7TUFBSyxDQUFDLENBQUM7TUFDeERKLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZuQixRQUFRLENBQUMsbUJBQW1CLEVBQUUsTUFBTTtJQUNsQ2dCLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxNQUFNO01BQzlDZixjQUFjLENBQUM7UUFDYlYsRUFBRSxFQUFFLE9BQU87UUFDWGlCLE9BQU8sRUFBRSxDQUNQO1VBQUVqQixFQUFFLEVBQUUsVUFBVTtVQUFFSyxLQUFLLEVBQUU7UUFBZSxDQUFDLEVBQ3pDO1VBQUVMLEVBQUUsRUFBRSxVQUFVO1VBQUVLLEtBQUssRUFBRTtRQUFnQixDQUFDO01BRTlDLENBQUMsQ0FBQztNQUNGc0IsTUFBTSxDQUFDRSxjQUFNLENBQUNDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUNGLGlCQUFpQixDQUFDLENBQUM7TUFDakVELE1BQU0sQ0FBQ0UsY0FBTSxDQUFDQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO01BQ2pFRCxNQUFNLENBQUNFLGNBQU0sQ0FBQ0csU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUNKLGlCQUFpQixDQUFDLENBQUM7TUFDNURELE1BQU0sQ0FBQ0UsY0FBTSxDQUFDRyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQ0osaUJBQWlCLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7SUFFRkgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLE1BQU07TUFDakRmLGNBQWMsQ0FBQztRQUFFTyxPQUFPLEVBQUU7TUFBRyxDQUFDLENBQUM7TUFDL0JVLE1BQU0sQ0FBQ0UsY0FBTSxDQUFDSSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQ0MsR0FBRyxDQUFDTixpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGbkIsUUFBUSxDQUFDLG1CQUFtQixFQUFFLE1BQU07SUFDbEM7SUFDQTtJQUNBO0lBQ0FnQixFQUFFLENBQUMseURBQXlELEVBQUUsTUFBTTtNQUNsRSxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHaEIsY0FBYyxDQUFDO1FBQUVWLEVBQUUsRUFBRSxPQUFPO1FBQUVDLE9BQU8sRUFBRTtNQUFNLENBQUMsQ0FBQztNQUNyRTBCLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7TUFDckNELE1BQU0sQ0FBQ0UsY0FBTSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztJQUVGSCxFQUFFLENBQUMsc0RBQXNELEVBQUUsTUFBTTtNQUMvRCxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHaEIsY0FBYyxDQUFDO1FBQUVWLEVBQUUsRUFBRSxPQUFPO1FBQUVDLE9BQU8sRUFBRTtNQUFLLENBQUMsQ0FBQztNQUNwRTBCLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7TUFDckNELE1BQU0sQ0FBQ0UsY0FBTSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztJQUVGSCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsTUFBTTtNQUN0RCxNQUFNO1FBQUVDO01BQVUsQ0FBQyxHQUFHaEIsY0FBYyxDQUFDO1FBQUVWLEVBQUUsRUFBRTtNQUFRLENBQUMsQ0FBQztNQUNyRDJCLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLENBQUNFLGlCQUFpQixDQUFDLENBQUM7TUFDckNELE1BQU0sQ0FBQ0UsY0FBTSxDQUFDQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDRixpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,88 @@
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 _styles = require("@mui/material/styles");
7
+ var _choice = require("../choice");
8
+ jest.mock('@pie-lib/render-ui', () => ({
9
+ HtmlAndMath: props => /*#__PURE__*/_react.default.createElement("div", null, props.text),
10
+ color: {
11
+ text: () => '#000',
12
+ background: () => '#fff',
13
+ white: () => '#fff',
14
+ correct: () => '#00ff00',
15
+ incorrect: () => '#ff0000'
16
+ }
17
+ }));
18
+ const theme = (0, _styles.createTheme)();
19
+ describe('Layout', () => {
20
+ const renderLayout = extras => {
21
+ const defaults = {
22
+ classes: {},
23
+ content: 'Choice Content'
24
+ };
25
+ const props = {
26
+ ...defaults,
27
+ ...extras
28
+ };
29
+ return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
30
+ theme: theme
31
+ }, /*#__PURE__*/_react.default.createElement(_choice.Layout, props)));
32
+ };
33
+ describe('rendering', () => {
34
+ it('renders without crashing', () => {
35
+ const {
36
+ container
37
+ } = renderLayout();
38
+ expect(container).toBeInTheDocument();
39
+ });
40
+ it('renders the choice content', () => {
41
+ renderLayout({
42
+ content: 'Test Choice Text'
43
+ });
44
+ expect(_react2.screen.getByText('Test Choice Text')).toBeInTheDocument();
45
+ });
46
+ it('renders HTML content', () => {
47
+ renderLayout({
48
+ content: '<strong>Bold Text</strong>'
49
+ });
50
+ expect(_react2.screen.getByText('Bold Text')).toBeInTheDocument();
51
+ });
52
+ });
53
+ describe('states', () => {
54
+ it('renders when disabled', () => {
55
+ const {
56
+ container
57
+ } = renderLayout({
58
+ disabled: true
59
+ });
60
+ expect(container).toBeInTheDocument();
61
+ });
62
+ it('renders when correct', () => {
63
+ const {
64
+ container
65
+ } = renderLayout({
66
+ correct: true
67
+ });
68
+ expect(container).toBeInTheDocument();
69
+ });
70
+ it('renders when incorrect', () => {
71
+ const {
72
+ container
73
+ } = renderLayout({
74
+ correct: false
75
+ });
76
+ expect(container).toBeInTheDocument();
77
+ });
78
+ it('renders when dragging', () => {
79
+ const {
80
+ container
81
+ } = renderLayout({
82
+ isDragging: true
83
+ });
84
+ expect(container).toBeInTheDocument();
85
+ });
86
+ });
87
+ });
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2Nob2ljZSIsImplc3QiLCJtb2NrIiwiSHRtbEFuZE1hdGgiLCJwcm9wcyIsImRlZmF1bHQiLCJjcmVhdGVFbGVtZW50IiwidGV4dCIsImNvbG9yIiwiYmFja2dyb3VuZCIsIndoaXRlIiwiY29ycmVjdCIsImluY29ycmVjdCIsInRoZW1lIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsInJlbmRlckxheW91dCIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNvbnRlbnQiLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiTGF5b3V0IiwiaXQiLCJjb250YWluZXIiLCJleHBlY3QiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsImRpc2FibGVkIiwiaXNEcmFnZ2luZyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXRlZ29yaXplL19fdGVzdHNfXy9jaG9pY2UudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyLCBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCB7IExheW91dCB9IGZyb20gJy4uL2Nob2ljZSc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvcmVuZGVyLXVpJywgKCkgPT4gKHtcbiAgSHRtbEFuZE1hdGg6IChwcm9wcykgPT4gPGRpdj57cHJvcHMudGV4dH08L2Rpdj4sXG4gIGNvbG9yOiB7XG4gICAgdGV4dDogKCkgPT4gJyMwMDAnLFxuICAgIGJhY2tncm91bmQ6ICgpID0+ICcjZmZmJyxcbiAgICB3aGl0ZTogKCkgPT4gJyNmZmYnLFxuICAgIGNvcnJlY3Q6ICgpID0+ICcjMDBmZjAwJyxcbiAgICBpbmNvcnJlY3Q6ICgpID0+ICcjZmYwMDAwJyxcbiAgfSxcbn0pKTtcblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSgpO1xuXG5kZXNjcmliZSgnTGF5b3V0JywgKCkgPT4ge1xuICBjb25zdCByZW5kZXJMYXlvdXQgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNvbnRlbnQ6ICdDaG9pY2UgQ29udGVudCcsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8TGF5b3V0IHsuLi5wcm9wc30gLz5cbiAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJMYXlvdXQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB0aGUgY2hvaWNlIGNvbnRlbnQnLCAoKSA9PiB7XG4gICAgICByZW5kZXJMYXlvdXQoeyBjb250ZW50OiAnVGVzdCBDaG9pY2UgVGV4dCcgfSk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgnVGVzdCBDaG9pY2UgVGV4dCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgSFRNTCBjb250ZW50JywgKCkgPT4ge1xuICAgICAgcmVuZGVyTGF5b3V0KHsgY29udGVudDogJzxzdHJvbmc+Qm9sZCBUZXh0PC9zdHJvbmc+JyB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KCdCb2xkIFRleHQnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N0YXRlcycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxheW91dCh7IGRpc2FibGVkOiB0cnVlIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdoZW4gY29ycmVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJMYXlvdXQoeyBjb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdoZW4gaW5jb3JyZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxheW91dCh7IGNvcnJlY3Q6IGZhbHNlIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdoZW4gZHJhZ2dpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyTGF5b3V0KHsgaXNEcmFnZ2luZzogdHJ1ZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFB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