@pie-element/drag-in-the-blank 10.2.0 → 10.2.2-beta.2
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 +27 -42
- package/configure/CHANGELOG.md +27 -41
- package/configure/lib/__tests__/choice.test.js +114 -0
- package/configure/lib/__tests__/choices.test.js +157 -0
- package/configure/lib/__tests__/main.test.js +167 -0
- package/configure/lib/__tests__/markupUtils.test.js +105 -0
- package/configure/lib/choice.js +3 -4
- package/configure/lib/choice.js.map +1 -1
- package/configure/package.json +4 -4
- package/controller/CHANGELOG.md +38 -6
- package/controller/lib/__tests__/index.test.js +775 -0
- package/controller/package.json +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/index.test.js +118 -0
- package/lib/__tests__/main.test.js +139 -0
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,78 +3,63 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## [10.2.2-beta.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.7...@pie-element/drag-in-the-blank@10.2.2-beta.2) (2026-08-26)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
- read the prompt container by class, not by the id pie-lib removed PIE-927 ([aaaf6c2](https://github.com/pie-framework/pie-elements/commit/aaaf6c2f189de3b39f9de85969aeb2e50376c548))
|
|
12
|
-
- **theming:** move the grey palette reads onto --pie-\* tokens PIE-856 ([d7d005b](https://github.com/pie-framework/pie-elements/commit/d7d005bf081843335b4b0377852f2ecd075cb62d)), closes [#000000](https://github.com/pie-framework/pie-elements/issues/000000) [#E0E1E6](https://github.com/pie-framework/pie-elements/issues/E0E1E6) [#646464](https://github.com/pie-framework/pie-elements/issues/646464) [#616161](https://github.com/pie-framework/pie-elements/issues/616161) [#E0E1E6](https://github.com/pie-framework/pie-elements/issues/E0E1E6) [#C0C3](https://github.com/pie-framework/pie-elements/issues/C0C3)
|
|
10
|
+
# [10.4.0-beta.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.6...@pie-element/drag-in-the-blank@10.4.0-beta.7) (2026-08-20)
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
# [10.4.0-beta.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.5...@pie-element/drag-in-the-blank@10.4.0-beta.6) (2026-08-14)
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
# [10.4.0-beta.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.4...@pie-element/drag-in-the-blank@10.4.0-beta.5) (2026-08-11)
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
# [10.4.0-beta.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.3...@pie-element/drag-in-the-blank@10.4.0-beta.4) (2026-08-11)
|
|
25
23
|
|
|
26
24
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
# [10.4.0-beta.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.2...@pie-element/drag-in-the-blank@10.4.0-beta.3) (2026-08-11)
|
|
29
27
|
|
|
30
28
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
# [10.4.0-beta.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.1...@pie-element/drag-in-the-blank@10.4.0-beta.2) (2026-08-11)
|
|
33
31
|
|
|
34
32
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
# [10.4.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.4.0-beta.0...@pie-element/drag-in-the-blank@10.4.0-beta.1) (2026-08-07)
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
|
|
36
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
41
37
|
|
|
42
|
-
|
|
38
|
+
# [10.4.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.3.0-beta.0...@pie-element/drag-in-the-blank@10.4.0-beta.0) (2026-08-07)
|
|
43
39
|
|
|
44
|
-
|
|
40
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
- sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
|
|
42
|
+
# [10.3.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.3.0-beta.0...@pie-element/drag-in-the-blank@10.3.0-beta.1) (2026-08-07)
|
|
48
43
|
|
|
49
|
-
|
|
44
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
50
45
|
|
|
51
|
-
|
|
46
|
+
# [10.3.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.2.0-beta.0...@pie-element/drag-in-the-blank@10.3.0-beta.0) (2026-08-07)
|
|
52
47
|
|
|
53
|
-
|
|
54
|
-
- **drag-in-the-blank:** update onChoiceDone to pass latest value from editor PIE-701 ([40b5dc6](https://github.com/pie-framework/pie-elements/commit/40b5dc6dbdf659db2adcfdfb139c4dd4fa06a2f9))
|
|
55
|
-
- handle webcomponent lifecycle on every element that misses it PIE-703 ([9d5923f](https://github.com/pie-framework/pie-elements/commit/9d5923f973f0471e1e8f69ad4309cfc63d980d93))
|
|
48
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
56
49
|
|
|
57
|
-
|
|
50
|
+
# [10.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.1.0...@pie-element/drag-in-the-blank@10.2.0-beta.0) (2026-08-07)
|
|
58
51
|
|
|
59
52
|
### Bug Fixes
|
|
60
53
|
|
|
54
|
+
- bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
|
|
55
|
+
- bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
|
|
61
56
|
- bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
### Bug Fixes
|
|
66
|
-
|
|
57
|
+
- bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
|
|
58
|
+
- bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
|
|
67
59
|
- bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
### Bug Fixes
|
|
72
|
-
|
|
73
|
-
- bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
|
|
74
|
-
|
|
75
|
-
## [10.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.1.0...@pie-element/drag-in-the-blank@10.1.1) (2026-05-21)
|
|
76
|
-
|
|
77
|
-
**Note:** Version bump only for package @pie-element/drag-in-the-blank
|
|
60
|
+
- **drag-in-the-blank:** update onChoiceDone to pass latest value from editor PIE-701 ([40b5dc6](https://github.com/pie-framework/pie-elements/commit/40b5dc6dbdf659db2adcfdfb139c4dd4fa06a2f9))
|
|
61
|
+
- handle webcomponent lifecycle on every element that misses it PIE-703 ([9d5923f](https://github.com/pie-framework/pie-elements/commit/9d5923f973f0471e1e8f69ad4309cfc63d980d93))
|
|
62
|
+
- sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
|
|
78
63
|
|
|
79
64
|
# [10.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@10.1.0-next.1...@pie-element/drag-in-the-blank@10.1.0) (2026-05-21)
|
|
80
65
|
|
package/configure/CHANGELOG.md
CHANGED
|
@@ -3,77 +3,63 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [9.
|
|
6
|
+
# [9.4.0-beta.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.7...@pie-element/drag-in-the-blank-configure@9.4.0-beta.8) (2026-08-26)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
- **theming:** move the grey palette reads onto --pie-\* tokens PIE-856 ([d7d005b](https://github.com/pie-framework/pie-elements/commit/d7d005bf081843335b4b0377852f2ecd075cb62d)), closes [#000000](https://github.com/pie-framework/pie-elements/issues/000000) [#E0E1E6](https://github.com/pie-framework/pie-elements/issues/E0E1E6) [#646464](https://github.com/pie-framework/pie-elements/issues/646464) [#616161](https://github.com/pie-framework/pie-elements/issues/616161) [#E0E1E6](https://github.com/pie-framework/pie-elements/issues/E0E1E6) [#C0C3](https://github.com/pie-framework/pie-elements/issues/C0C3)
|
|
10
|
+
# [9.4.0-beta.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.6...@pie-element/drag-in-the-blank-configure@9.4.0-beta.7) (2026-08-20)
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
# [9.4.0-beta.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.5...@pie-element/drag-in-the-blank-configure@9.4.0-beta.6) (2026-08-14)
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
# [9.4.0-beta.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.4...@pie-element/drag-in-the-blank-configure@9.4.0-beta.5) (2026-08-11)
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
# [9.4.0-beta.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.3...@pie-element/drag-in-the-blank-configure@9.4.0-beta.4) (2026-08-11)
|
|
24
23
|
|
|
25
24
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
# [9.4.0-beta.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.2...@pie-element/drag-in-the-blank-configure@9.4.0-beta.3) (2026-08-11)
|
|
28
27
|
|
|
29
28
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
# [9.4.0-beta.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.1...@pie-element/drag-in-the-blank-configure@9.4.0-beta.2) (2026-08-11)
|
|
32
31
|
|
|
33
32
|
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
# [9.4.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.4.0-beta.0...@pie-element/drag-in-the-blank-configure@9.4.0-beta.1) (2026-08-07)
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
|
|
36
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
40
37
|
|
|
41
|
-
|
|
38
|
+
# [9.4.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.3.0-beta.0...@pie-element/drag-in-the-blank-configure@9.4.0-beta.0) (2026-08-07)
|
|
42
39
|
|
|
43
|
-
|
|
40
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
- sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
|
|
42
|
+
# [9.3.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.3.0-beta.0...@pie-element/drag-in-the-blank-configure@9.3.0-beta.1) (2026-08-07)
|
|
47
43
|
|
|
48
|
-
|
|
44
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
# [9.3.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.2.0-beta.0...@pie-element/drag-in-the-blank-configure@9.3.0-beta.0) (2026-08-07)
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
- **drag-in-the-blank:** update onChoiceDone to pass latest value from editor PIE-701 ([40b5dc6](https://github.com/pie-framework/pie-elements/commit/40b5dc6dbdf659db2adcfdfb139c4dd4fa06a2f9))
|
|
54
|
-
- handle webcomponent lifecycle on every element that misses it PIE-703 ([9d5923f](https://github.com/pie-framework/pie-elements/commit/9d5923f973f0471e1e8f69ad4309cfc63d980d93))
|
|
48
|
+
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
55
49
|
|
|
56
|
-
|
|
50
|
+
# [9.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.1.0...@pie-element/drag-in-the-blank-configure@9.2.0-beta.0) (2026-08-07)
|
|
57
51
|
|
|
58
52
|
### Bug Fixes
|
|
59
53
|
|
|
54
|
+
- bump libs & shared modules PIE-706, PIE-702, PIE-679, PIE-698 ([5b1a8c4](https://github.com/pie-framework/pie-elements/commit/5b1a8c4c3eba2126fc43d78fd0187e7cd11d5424))
|
|
55
|
+
- bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
|
|
60
56
|
- bump shared modules and libs PIE-661 PIE-664 PIE-683 PIE-666 PIE-656 PIE-657 PIE-658 PIE-659 PIE-670 ([ebd6be4](https://github.com/pie-framework/pie-elements/commit/ebd6be4fd48fca41ad4c4908f606b25334731aed))
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
### Bug Fixes
|
|
65
|
-
|
|
57
|
+
- bump shared modules and libs PIE-674, PIE-662, PIE-705, PIE-674, PIE-963 ([78a3f64](https://github.com/pie-framework/pie-elements/commit/78a3f64652c9581c61bd4159f3210fc1e32d8bcf))
|
|
58
|
+
- bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
|
|
66
59
|
- bump shared modules and libsPIE-603, PIE-604, PIE-663, PIE-662, PIE-678 ([e61c7a7](https://github.com/pie-framework/pie-elements/commit/e61c7a7d23744586337dfbb17a18ebfc656c202f))
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
### Bug Fixes
|
|
71
|
-
|
|
72
|
-
- bump shared modules and libs PIE-600, PIE-602 ([ce99f6a](https://github.com/pie-framework/pie-elements/commit/ce99f6af50cb855b666a6df9340f9f5445fde4c4))
|
|
73
|
-
|
|
74
|
-
## [9.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.1.0...@pie-element/drag-in-the-blank-configure@9.1.1) (2026-05-21)
|
|
75
|
-
|
|
76
|
-
**Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
|
|
60
|
+
- **drag-in-the-blank:** update onChoiceDone to pass latest value from editor PIE-701 ([40b5dc6](https://github.com/pie-framework/pie-elements/commit/40b5dc6dbdf659db2adcfdfb139c4dd4fa06a2f9))
|
|
61
|
+
- handle webcomponent lifecycle on every element that misses it PIE-703 ([9d5923f](https://github.com/pie-framework/pie-elements/commit/9d5923f973f0471e1e8f69ad4309cfc63d980d93))
|
|
62
|
+
- sync libs versions ([48b5be9](https://github.com/pie-framework/pie-elements/commit/48b5be9559eb5b5235ca05f51c5f0161032a7041))
|
|
77
63
|
|
|
78
64
|
# [9.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@9.1.0-next.1...@pie-element/drag-in-the-blank-configure@9.1.0) (2026-05-21)
|
|
79
65
|
|
|
@@ -0,0 +1,114 @@
|
|
|
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 _core = require("@dnd-kit/core");
|
|
8
|
+
var _choice = require("../choice");
|
|
9
|
+
// Mock @dnd-kit/core
|
|
10
|
+
jest.mock('@dnd-kit/core', () => ({
|
|
11
|
+
DndContext: ({
|
|
12
|
+
children
|
|
13
|
+
}) => /*#__PURE__*/_react.default.createElement("div", null, children),
|
|
14
|
+
useDraggable: jest.fn(() => ({
|
|
15
|
+
attributes: {},
|
|
16
|
+
listeners: {},
|
|
17
|
+
setNodeRef: jest.fn(),
|
|
18
|
+
isDragging: false
|
|
19
|
+
}))
|
|
20
|
+
}));
|
|
21
|
+
const theme = (0, _styles.createTheme)();
|
|
22
|
+
describe('Choice', () => {
|
|
23
|
+
let onClick;
|
|
24
|
+
let onRemoveChoice;
|
|
25
|
+
beforeEach(() => {
|
|
26
|
+
onClick = jest.fn();
|
|
27
|
+
onRemoveChoice = jest.fn();
|
|
28
|
+
});
|
|
29
|
+
const renderChoice = (extras = {}) => {
|
|
30
|
+
const props = {
|
|
31
|
+
key: '0',
|
|
32
|
+
choice: {
|
|
33
|
+
value: '<div>6</div>',
|
|
34
|
+
id: '0'
|
|
35
|
+
},
|
|
36
|
+
onClick,
|
|
37
|
+
onRemoveChoice,
|
|
38
|
+
...extras
|
|
39
|
+
};
|
|
40
|
+
return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
|
|
41
|
+
theme: theme
|
|
42
|
+
}, /*#__PURE__*/_react.default.createElement(_core.DndContext, null, /*#__PURE__*/_react.default.createElement(_choice.BlankContent, props))));
|
|
43
|
+
};
|
|
44
|
+
describe('render', () => {
|
|
45
|
+
it('renders without crashing', () => {
|
|
46
|
+
const {
|
|
47
|
+
container
|
|
48
|
+
} = renderChoice();
|
|
49
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
it('displays the choice value', () => {
|
|
52
|
+
const {
|
|
53
|
+
container
|
|
54
|
+
} = renderChoice();
|
|
55
|
+
expect(container.innerHTML).toContain('<div>6</div>');
|
|
56
|
+
});
|
|
57
|
+
it('calls onClick when clicked on choice', () => {
|
|
58
|
+
const {
|
|
59
|
+
container
|
|
60
|
+
} = renderChoice();
|
|
61
|
+
const choiceElement = container.firstChild.firstChild;
|
|
62
|
+
if (choiceElement) {
|
|
63
|
+
_react2.fireEvent.click(choiceElement);
|
|
64
|
+
expect(onClick).toHaveBeenCalled();
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Note: The delete icon click behavior cannot be easily tested with RTL because:
|
|
69
|
+
// 1. The onClick handler is on a styled MUI component with stopPropagation
|
|
70
|
+
// 2. The actual DOM structure is complex with SVG elements
|
|
71
|
+
// 3. Integration tests should verify this user interaction
|
|
72
|
+
// Keeping the test but marking it as a known limitation
|
|
73
|
+
it.skip('calls onRemoveChoice when delete icon is clicked', () => {
|
|
74
|
+
const {
|
|
75
|
+
container
|
|
76
|
+
} = renderChoice();
|
|
77
|
+
const svgs = container.querySelectorAll('svg');
|
|
78
|
+
const deleteIcon = svgs[svgs.length - 1];
|
|
79
|
+
if (deleteIcon) {
|
|
80
|
+
const deleteButton = deleteIcon.closest('[class*="StyledDeleteIcon"]') || deleteIcon.parentElement;
|
|
81
|
+
_react2.fireEvent.click(deleteButton);
|
|
82
|
+
expect(onRemoveChoice).toHaveBeenCalled();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('drag behavior', () => {
|
|
87
|
+
it('prevents drag when choice value is empty', () => {
|
|
88
|
+
// Mock window.alert
|
|
89
|
+
const jsdomAlert = window.alert;
|
|
90
|
+
window.alert = jest.fn();
|
|
91
|
+
const {
|
|
92
|
+
container
|
|
93
|
+
} = renderChoice({
|
|
94
|
+
choice: {
|
|
95
|
+
value: '',
|
|
96
|
+
id: '0'
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const choiceElement = container.firstChild.firstChild;
|
|
100
|
+
if (choiceElement) {
|
|
101
|
+
const event = new Event('dragstart', {
|
|
102
|
+
bubbles: true,
|
|
103
|
+
cancelable: true
|
|
104
|
+
});
|
|
105
|
+
(0, _react2.fireEvent)(choiceElement, event);
|
|
106
|
+
|
|
107
|
+
// The component should prevent the drag and show an alert
|
|
108
|
+
// Note: The actual alert behavior is tested in integration tests
|
|
109
|
+
}
|
|
110
|
+
window.alert = jsdomAlert;
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2NvcmUiLCJfY2hvaWNlIiwiamVzdCIsIm1vY2siLCJEbmRDb250ZXh0IiwiY2hpbGRyZW4iLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsInVzZURyYWdnYWJsZSIsImZuIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsInNldE5vZGVSZWYiLCJpc0RyYWdnaW5nIiwidGhlbWUiLCJjcmVhdGVUaGVtZSIsImRlc2NyaWJlIiwib25DbGljayIsIm9uUmVtb3ZlQ2hvaWNlIiwiYmVmb3JlRWFjaCIsInJlbmRlckNob2ljZSIsImV4dHJhcyIsInByb3BzIiwia2V5IiwiY2hvaWNlIiwidmFsdWUiLCJpZCIsInJlbmRlciIsIlRoZW1lUHJvdmlkZXIiLCJCbGFua0NvbnRlbnQiLCJpdCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsImlubmVySFRNTCIsInRvQ29udGFpbiIsImNob2ljZUVsZW1lbnQiLCJmaXJlRXZlbnQiLCJjbGljayIsInRvSGF2ZUJlZW5DYWxsZWQiLCJza2lwIiwic3ZncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJkZWxldGVJY29uIiwibGVuZ3RoIiwiZGVsZXRlQnV0dG9uIiwiY2xvc2VzdCIsInBhcmVudEVsZW1lbnQiLCJqc2RvbUFsZXJ0Iiwid2luZG93IiwiYWxlcnQiLCJldmVudCIsIkV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2Nob2ljZS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBmaXJlRXZlbnQsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciwgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBEbmRDb250ZXh0IH0gZnJvbSAnQGRuZC1raXQvY29yZSc7XG5cbmltcG9ydCB7IEJsYW5rQ29udGVudCBhcyBDaG9pY2UgfSBmcm9tICcuLi9jaG9pY2UnO1xuXG4vLyBNb2NrIEBkbmQta2l0L2NvcmVcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIERuZENvbnRleHQ6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXY+e2NoaWxkcmVufTwvZGl2PixcbiAgdXNlRHJhZ2dhYmxlOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgYXR0cmlidXRlczoge30sXG4gICAgbGlzdGVuZXJzOiB7fSxcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIH0pKSxcbn0pKTtcblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSgpO1xuXG5kZXNjcmliZSgnQ2hvaWNlJywgKCkgPT4ge1xuICBsZXQgb25DbGljaztcbiAgbGV0IG9uUmVtb3ZlQ2hvaWNlO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2xpY2sgPSBqZXN0LmZuKCk7XG4gICAgb25SZW1vdmVDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlbmRlckNob2ljZSA9IChleHRyYXMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAga2V5OiAnMCcsXG4gICAgICBjaG9pY2U6IHtcbiAgICAgICAgdmFsdWU6ICc8ZGl2PjY8L2Rpdj4nLFxuICAgICAgICBpZDogJzAnLFxuICAgICAgfSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvblJlbW92ZUNob2ljZSxcbiAgICAgIC4uLmV4dHJhcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlbmRlcihcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIDxEbmRDb250ZXh0PlxuICAgICAgICAgIDxDaG9pY2Ugey4uLnByb3BzfSAvPlxuICAgICAgICA8L0RuZENvbnRleHQ+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2hvaWNlKCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZGlzcGxheXMgdGhlIGNob2ljZSB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDaG9pY2UoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuaW5uZXJIVE1MKS50b0NvbnRhaW4oJzxkaXY+NjwvZGl2PicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uQ2xpY2sgd2hlbiBjbGlja2VkIG9uIGNob2ljZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDaG9pY2UoKTtcbiAgICAgIGNvbnN0IGNob2ljZUVsZW1lbnQgPSBjb250YWluZXIuZmlyc3RDaGlsZC5maXJzdENoaWxkO1xuXG4gICAgICBpZiAoY2hvaWNlRWxlbWVudCkge1xuICAgICAgICBmaXJlRXZlbnQuY2xpY2soY2hvaWNlRWxlbWVudCk7XG4gICAgICAgIGV4cGVjdChvbkNsaWNrKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBOb3RlOiBUaGUgZGVsZXRlIGljb24gY2xpY2sgYmVoYXZpb3IgY2Fubm90IGJlIGVhc2lseSB0ZXN0ZWQgd2l0aCBSVEwgYmVjYXVzZTpcbiAgICAvLyAxLiBUaGUgb25DbGljayBoYW5kbGVyIGlzIG9uIGEgc3R5bGVkIE1VSSBjb21wb25lbnQgd2l0aCBzdG9wUHJvcGFnYXRpb25cbiAgICAvLyAyLiBUaGUgYWN0dWFsIERPTSBzdHJ1Y3R1cmUgaXMgY29tcGxleCB3aXRoIFNWRyBlbGVtZW50c1xuICAgIC8vIDMuIEludGVncmF0aW9uIHRlc3RzIHNob3VsZCB2ZXJpZnkgdGhpcyB1c2VyIGludGVyYWN0aW9uXG4gICAgLy8gS2VlcGluZyB0aGUgdGVzdCBidXQgbWFya2luZyBpdCBhcyBhIGtub3duIGxpbWl0YXRpb25cbiAgICBpdC5za2lwKCdjYWxscyBvblJlbW92ZUNob2ljZSB3aGVuIGRlbGV0ZSBpY29uIGlzIGNsaWNrZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2hvaWNlKCk7XG4gICAgICBjb25zdCBzdmdzID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3N2ZycpO1xuICAgICAgY29uc3QgZGVsZXRlSWNvbiA9IHN2Z3Nbc3Zncy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKGRlbGV0ZUljb24pIHtcbiAgICAgICAgY29uc3QgZGVsZXRlQnV0dG9uID0gZGVsZXRlSWNvbi5jbG9zZXN0KCdbY2xhc3MqPVwiU3R5bGVkRGVsZXRlSWNvblwiXScpIHx8IGRlbGV0ZUljb24ucGFyZW50RWxlbWVudDtcbiAgICAgICAgZmlyZUV2ZW50LmNsaWNrKGRlbGV0ZUJ1dHRvbik7XG4gICAgICAgIGV4cGVjdChvblJlbW92ZUNob2ljZSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZHJhZyBiZWhhdmlvcicsICgpID0+IHtcbiAgICBpdCgncHJldmVudHMgZHJhZyB3aGVuIGNob2ljZSB2YWx1ZSBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIC8vIE1vY2sgd2luZG93LmFsZXJ0XG4gICAgICBjb25zdCBqc2RvbUFsZXJ0ID0gd2luZG93LmFsZXJ0O1xuICAgICAgd2luZG93LmFsZXJ0ID0gamVzdC5mbigpO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ2hvaWNlKHtcbiAgICAgICAgY2hvaWNlOiB7IHZhbHVlOiAnJywgaWQ6ICcwJyB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNob2ljZUVsZW1lbnQgPSBjb250YWluZXIuZmlyc3RDaGlsZC5maXJzdENoaWxkO1xuXG4gICAgICBpZiAoY2hvaWNlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnZHJhZ3N0YXJ0JywgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0pO1xuICAgICAgICBmaXJlRXZlbnQoY2hvaWNlRWxlbWVudCwgZXZlbnQpO1xuXG4gICAgICAgIC8vIFRoZSBjb21wb25lbnQgc2hvdWxkIHByZXZlbnQgdGhlIGRyYWcgYW5kIHNob3cgYW4gYWxlcnRcbiAgICAgICAgLy8gTm90ZTogVGhlIGFjdHVhbCBhbGVydCBiZWhhdmlvciBpcyB0ZXN0ZWQgaW4gaW50ZWdyYXRpb24gdGVzdHNcbiAgICAgIH1cblxuICAgICAgd2luZG93LmFsZXJ0ID0ganNkb21BbGVydDtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBRUE7QUFDQUssSUFBSSxDQUFDQyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU87RUFDaENDLFVBQVUsRUFBRUEsQ0FBQztJQUFFQztFQUFTLENBQUMsa0JBQUtWLE1BQUEsQ0FBQVcsT0FBQSxDQUFBQyxhQUFBLGNBQU1GLFFBQWMsQ0FBQztFQUNuREcsWUFBWSxFQUFFTixJQUFJLENBQUNPLEVBQUUsQ0FBQyxPQUFPO0lBQzNCQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2RDLFNBQVMs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
|
|
@@ -0,0 +1,157 @@
|
|
|
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 _choices = require("../choices");
|
|
8
|
+
var _defaults = _interopRequireDefault(require("../defaults"));
|
|
9
|
+
var _markupUtils = require("../markupUtils");
|
|
10
|
+
jest.mock('@pie-lib/config-ui', () => ({
|
|
11
|
+
choiceUtils: {
|
|
12
|
+
firstAvailableIndex: jest.fn()
|
|
13
|
+
},
|
|
14
|
+
settings: {
|
|
15
|
+
Panel: props => /*#__PURE__*/_react.default.createElement("div", props),
|
|
16
|
+
toggle: jest.fn(),
|
|
17
|
+
radio: jest.fn(),
|
|
18
|
+
dropdown: jest.fn()
|
|
19
|
+
},
|
|
20
|
+
layout: {
|
|
21
|
+
ConfigLayout: props => /*#__PURE__*/_react.default.createElement("div", null, props.children)
|
|
22
|
+
},
|
|
23
|
+
AlertDialog: props => /*#__PURE__*/_react.default.createElement("div", {
|
|
24
|
+
"data-testid": "alert-dialog"
|
|
25
|
+
}, props.open && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", null, props.title), /*#__PURE__*/_react.default.createElement("div", null, props.text), /*#__PURE__*/_react.default.createElement("button", {
|
|
26
|
+
onClick: props.onConfirm
|
|
27
|
+
}, "Confirm")))
|
|
28
|
+
}));
|
|
29
|
+
jest.mock('@pie-lib/editable-html-tip-tap', () => ({
|
|
30
|
+
__esModule: true,
|
|
31
|
+
default: ({
|
|
32
|
+
markup,
|
|
33
|
+
onChange
|
|
34
|
+
}) => /*#__PURE__*/_react.default.createElement("div", {
|
|
35
|
+
"data-testid": "editable-html",
|
|
36
|
+
onClick: () => onChange && onChange('new value')
|
|
37
|
+
}, markup)
|
|
38
|
+
}));
|
|
39
|
+
jest.mock('../choice', () => ({
|
|
40
|
+
__esModule: true,
|
|
41
|
+
default: ({
|
|
42
|
+
choice,
|
|
43
|
+
onClick,
|
|
44
|
+
onRemoveChoice
|
|
45
|
+
}) => /*#__PURE__*/_react.default.createElement("div", {
|
|
46
|
+
"data-testid": `choice-${choice.id}`
|
|
47
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
48
|
+
onClick: onClick
|
|
49
|
+
}, choice.value), /*#__PURE__*/_react.default.createElement("button", {
|
|
50
|
+
onClick: onRemoveChoice
|
|
51
|
+
}, "Remove"))
|
|
52
|
+
}));
|
|
53
|
+
const theme = (0, _styles.createTheme)();
|
|
54
|
+
const model = {
|
|
55
|
+
markup: '{{0}} + {{1}} = 15',
|
|
56
|
+
prompt: '<p>Solve the equation below.</p>',
|
|
57
|
+
choices: [{
|
|
58
|
+
value: '<div>6</div>',
|
|
59
|
+
id: '0'
|
|
60
|
+
}, {
|
|
61
|
+
value: '<div>9</div>',
|
|
62
|
+
id: '1'
|
|
63
|
+
}, {
|
|
64
|
+
value: '<div>12</div>',
|
|
65
|
+
id: '2'
|
|
66
|
+
}],
|
|
67
|
+
choicesPosition: 'below',
|
|
68
|
+
correctResponse: {
|
|
69
|
+
0: '0',
|
|
70
|
+
1: '1'
|
|
71
|
+
},
|
|
72
|
+
duplicates: true,
|
|
73
|
+
alternateResponses: [['1'], ['0']],
|
|
74
|
+
rationale: '<p>A correct response is shown below:</p><ul><li>2/6 = 1/3</li><li>4/8 = 1/2</li><li>6/10 = 3/5</li><li>9/12 = 3/4</li></ul>'
|
|
75
|
+
};
|
|
76
|
+
const prepareModel = (model = {}) => {
|
|
77
|
+
const joinedObj = {
|
|
78
|
+
..._defaults.default.model,
|
|
79
|
+
...model
|
|
80
|
+
};
|
|
81
|
+
// Handle null choices by converting to empty array for processing
|
|
82
|
+
const choicesForProcessing = joinedObj.choices || [];
|
|
83
|
+
const slateMarkup = model.slateMarkup || (0, _markupUtils.createSlateMarkup)(joinedObj.markup, choicesForProcessing, joinedObj.correctResponse);
|
|
84
|
+
const processedMarkup = (0, _markupUtils.processMarkup)(slateMarkup);
|
|
85
|
+
return {
|
|
86
|
+
...joinedObj,
|
|
87
|
+
slateMarkup,
|
|
88
|
+
markup: processedMarkup.markup,
|
|
89
|
+
correctResponse: processedMarkup.correctResponse
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
describe('Choices', () => {
|
|
93
|
+
let onChange;
|
|
94
|
+
beforeEach(() => {
|
|
95
|
+
onChange = jest.fn();
|
|
96
|
+
});
|
|
97
|
+
const renderChoices = extras => {
|
|
98
|
+
const defaults = {
|
|
99
|
+
onChange,
|
|
100
|
+
classes: {},
|
|
101
|
+
model: prepareModel(model),
|
|
102
|
+
duplicates: true,
|
|
103
|
+
...extras
|
|
104
|
+
};
|
|
105
|
+
return (0, _react2.render)(/*#__PURE__*/_react.default.createElement(_styles.ThemeProvider, {
|
|
106
|
+
theme: theme
|
|
107
|
+
}, /*#__PURE__*/_react.default.createElement(_choices.Choices, defaults)));
|
|
108
|
+
};
|
|
109
|
+
describe('render', () => {
|
|
110
|
+
it('renders without crashing with duplicates', () => {
|
|
111
|
+
const {
|
|
112
|
+
container
|
|
113
|
+
} = renderChoices();
|
|
114
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
115
|
+
});
|
|
116
|
+
it('renders without crashing without duplicates', () => {
|
|
117
|
+
const {
|
|
118
|
+
container
|
|
119
|
+
} = renderChoices({
|
|
120
|
+
duplicates: false
|
|
121
|
+
});
|
|
122
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
123
|
+
});
|
|
124
|
+
it('renders with null choices', () => {
|
|
125
|
+
const {
|
|
126
|
+
container
|
|
127
|
+
} = renderChoices({
|
|
128
|
+
model: prepareModel({
|
|
129
|
+
...model,
|
|
130
|
+
choices: null
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
134
|
+
});
|
|
135
|
+
it('renders with empty correctResponse', () => {
|
|
136
|
+
const {
|
|
137
|
+
container
|
|
138
|
+
} = renderChoices({
|
|
139
|
+
duplicates: false,
|
|
140
|
+
model: prepareModel({
|
|
141
|
+
...model,
|
|
142
|
+
correctResponse: {}
|
|
143
|
+
})
|
|
144
|
+
});
|
|
145
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Note: Tests for internal methods (onChoiceChanged, onChoiceFocus, onAddChoice, onChoiceRemove, getVisibleChoices)
|
|
150
|
+
// are implementation details and cannot be directly tested with RTL.
|
|
151
|
+
// These methods should be tested through user interactions in integration tests:
|
|
152
|
+
// - onChoiceChanged: Test by simulating typing in choice inputs
|
|
153
|
+
// - onAddChoice: Test by clicking an "Add Choice" button
|
|
154
|
+
// - onChoiceRemove: Test by clicking a "Remove" button
|
|
155
|
+
// - getVisibleChoices: This is tested implicitly by checking what choices are rendered
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2Nob2ljZXMiLCJfZGVmYXVsdHMiLCJfbWFya3VwVXRpbHMiLCJqZXN0IiwibW9jayIsImNob2ljZVV0aWxzIiwiZmlyc3RBdmFpbGFibGVJbmRleCIsImZuIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJ0b2dnbGUiLCJyYWRpbyIsImRyb3Bkb3duIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwiY2hpbGRyZW4iLCJBbGVydERpYWxvZyIsIm9wZW4iLCJ0aXRsZSIsInRleHQiLCJvbkNsaWNrIiwib25Db25maXJtIiwiX19lc01vZHVsZSIsIm1hcmt1cCIsIm9uQ2hhbmdlIiwiY2hvaWNlIiwib25SZW1vdmVDaG9pY2UiLCJpZCIsInZhbHVlIiwidGhlbWUiLCJjcmVhdGVUaGVtZSIsIm1vZGVsIiwicHJvbXB0IiwiY2hvaWNlcyIsImNob2ljZXNQb3NpdGlvbiIsImNvcnJlY3RSZXNwb25zZSIsImR1cGxpY2F0ZXMiLCJhbHRlcm5hdGVSZXNwb25zZXMiLCJyYXRpb25hbGUiLCJwcmVwYXJlTW9kZWwiLCJqb2luZWRPYmoiLCJzZW5zaWJsZURlZmF1bHRzIiwiY2hvaWNlc0ZvclByb2Nlc3NpbmciLCJzbGF0ZU1hcmt1cCIsImNyZWF0ZVNsYXRlTWFya3VwIiwicHJvY2Vzc2VkTWFya3VwIiwicHJvY2Vzc01hcmt1cCIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsInJlbmRlckNob2ljZXMiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJyZW5kZXIiLCJUaGVtZVByb3ZpZGVyIiwiQ2hvaWNlcyIsIml0IiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9jaG9pY2VzLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIsIGNyZWF0ZVRoZW1lIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuXG5pbXBvcnQgeyBDaG9pY2VzIH0gZnJvbSAnLi4vY2hvaWNlcyc7XG5pbXBvcnQgc2Vuc2libGVEZWZhdWx0cyBmcm9tICcuLi9kZWZhdWx0cyc7XG5pbXBvcnQgeyBjcmVhdGVTbGF0ZU1hcmt1cCwgcHJvY2Vzc01hcmt1cCB9IGZyb20gJy4uL21hcmt1cFV0aWxzJztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBjaG9pY2VVdGlsczoge1xuICAgIGZpcnN0QXZhaWxhYmxlSW5kZXg6IGplc3QuZm4oKSxcbiAgfSxcbiAgc2V0dGluZ3M6IHtcbiAgICBQYW5lbDogKHByb3BzKSA9PiA8ZGl2IHsuLi5wcm9wc30gLz4sXG4gICAgdG9nZ2xlOiBqZXN0LmZuKCksXG4gICAgcmFkaW86IGplc3QuZm4oKSxcbiAgICBkcm9wZG93bjogamVzdC5mbigpLFxuICB9LFxuICBsYXlvdXQ6IHtcbiAgICBDb25maWdMYXlvdXQ6IChwcm9wcykgPT4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+LFxuICB9LFxuICBBbGVydERpYWxvZzogKHByb3BzKSA9PiAoXG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImFsZXJ0LWRpYWxvZ1wiPlxuICAgICAge3Byb3BzLm9wZW4gJiYgKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXY+e3Byb3BzLnRpdGxlfTwvZGl2PlxuICAgICAgICAgIDxkaXY+e3Byb3BzLnRleHR9PC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtwcm9wcy5vbkNvbmZpcm19PkNvbmZpcm08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwtdGlwLXRhcCcsICgpID0+ICh7XG4gIF9fZXNNb2R1bGU6IHRydWUsXG4gIGRlZmF1bHQ6ICh7IG1hcmt1cCwgb25DaGFuZ2UgfSkgPT4gKFxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGFibGUtaHRtbFwiXG4gICAgICBvbkNsaWNrPXsoKSA9PiBvbkNoYW5nZSAmJiBvbkNoYW5nZSgnbmV3IHZhbHVlJyl9XG4gICAgPlxuICAgICAge21hcmt1cH1cbiAgICA8L2Rpdj5cbiAgKSxcbn0pKTtcblxuamVzdC5tb2NrKCcuLi9jaG9pY2UnLCAoKSA9PiAoe1xuICBfX2VzTW9kdWxlOiB0cnVlLFxuICBkZWZhdWx0OiAoeyBjaG9pY2UsIG9uQ2xpY2ssIG9uUmVtb3ZlQ2hvaWNlIH0pID0+IChcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPXtgY2hvaWNlLSR7Y2hvaWNlLmlkfWB9PlxuICAgICAgPGRpdiBvbkNsaWNrPXtvbkNsaWNrfT57Y2hvaWNlLnZhbHVlfTwvZGl2PlxuICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvblJlbW92ZUNob2ljZX0+UmVtb3ZlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICksXG59KSk7XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoKTtcblxuY29uc3QgbW9kZWwgPSB7XG4gIG1hcmt1cDogJ3t7MH19ICsge3sxfX0gPSAxNScsXG4gIHByb21wdDogJzxwPlNvbHZlIHRoZSBlcXVhdGlvbiBiZWxvdy48L3A+JyxcbiAgY2hvaWNlczogW1xuICAgIHsgdmFsdWU6ICc8ZGl2PjY8L2Rpdj4nLCBpZDogJzAnIH0sXG4gICAgeyB2YWx1ZTogJzxkaXY+OTwvZGl2PicsIGlkOiAnMScgfSxcbiAgICB7IHZhbHVlOiAnPGRpdj4xMjwvZGl2PicsIGlkOiAnMicgfSxcbiAgXSxcbiAgY2hvaWNlc1Bvc2l0aW9uOiAnYmVsb3cnLFxuICBjb3JyZWN0UmVzcG9uc2U6IHtcbiAgICAwOiAnMCcsXG4gICAgMTogJzEnLFxuICB9LFxuICBkdXBsaWNhdGVzOiB0cnVlLFxuICBhbHRlcm5hdGVSZXNwb25zZXM6IFtbJzEnXSwgWycwJ11dLFxuICByYXRpb25hbGU6XG4gICAgJzxwPkEgY29ycmVjdCByZXNwb25zZSBpcyBzaG93biBiZWxvdzo8L3A+PHVsPjxsaT4yLzYgPSAxLzM8L2xpPjxsaT40LzggPSAxLzI8L2xpPjxsaT42LzEwID0gMy81PC9saT48bGk+OS8xMiA9IDMvNDwvbGk+PC91bD4nLFxufTtcblxuY29uc3QgcHJlcGFyZU1vZGVsID0gKG1vZGVsID0ge30pID0+IHtcbiAgY29uc3Qgam9pbmVkT2JqID0ge1xuICAgIC4uLnNlbnNpYmxlRGVmYXVsdHMubW9kZWwsXG4gICAgLi4ubW9kZWwsXG4gIH07XG4gIC8vIEhhbmRsZSBudWxsIGNob2ljZXMgYnkgY29udmVydGluZyB0byBlbXB0eSBhcnJheSBmb3IgcHJvY2Vzc2luZ1xuICBjb25zdCBjaG9pY2VzRm9yUHJvY2Vzc2luZyA9IGpvaW5lZE9iai5jaG9pY2VzIHx8IFtdO1xuICBjb25zdCBzbGF0ZU1hcmt1cCA9XG4gICAgbW9kZWwuc2xhdGVNYXJrdXAgfHwgY3JlYXRlU2xhdGVNYXJrdXAoam9pbmVkT2JqLm1hcmt1cCwgY2hvaWNlc0ZvclByb2Nlc3NpbmcsIGpvaW5lZE9iai5jb3JyZWN0UmVzcG9uc2UpO1xuICBjb25zdCBwcm9jZXNzZWRNYXJrdXAgPSBwcm9jZXNzTWFya3VwKHNsYXRlTWFya3VwKTtcblxuICByZXR1cm4ge1xuICAgIC4uLmpvaW5lZE9iaixcbiAgICBzbGF0ZU1hcmt1cCxcbiAgICBtYXJrdXA6IHByb2Nlc3NlZE1hcmt1cC5tYXJrdXAsXG4gICAgY29ycmVjdFJlc3BvbnNlOiBwcm9jZXNzZWRNYXJrdXAuY29ycmVjdFJlc3BvbnNlLFxuICB9O1xufTtcblxuZGVzY3JpYmUoJ0Nob2ljZXMnLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgfSk7XG5cbiAgY29uc3QgcmVuZGVyQ2hvaWNlcyA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBtb2RlbDogcHJlcGFyZU1vZGVsKG1vZGVsKSxcbiAgICAgIGR1cGxpY2F0ZXM6IHRydWUsXG4gICAgICAuLi5leHRyYXMsXG4gICAgfTtcblxuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8Q2hvaWNlcyB7Li4uZGVmYXVsdHN9IC8+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgKTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcgd2l0aCBkdXBsaWNhdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNob2ljZXMoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcgd2l0aG91dCBkdXBsaWNhdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNob2ljZXMoeyBkdXBsaWNhdGVzOiBmYWxzZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbnVsbCBjaG9pY2VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNob2ljZXMoeyBtb2RlbDogcHJlcGFyZU1vZGVsKHsgLi4ubW9kZWwsIGNob2ljZXM6IG51bGwgfSkgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGVtcHR5IGNvcnJlY3RSZXNwb25zZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDaG9pY2VzKHtcbiAgICAgICAgZHVwbGljYXRlczogZmFsc2UsXG4gICAgICAgIG1vZGVsOiBwcmVwYXJlTW9kZWwoe1xuICAgICAgICAgIC4uLm1vZGVsLFxuICAgICAgICAgIGNvcnJlY3RSZXNwb25zZToge30sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE5vdGU6IFRlc3RzIGZvciBpbnRlcm5hbCBtZXRob2RzIChvbkNob2ljZUNoYW5nZWQsIG9uQ2hvaWNlRm9jdXMsIG9uQWRkQ2hvaWNlLCBvbkNob2ljZVJlbW92ZSwgZ2V0VmlzaWJsZUNob2ljZXMpXG4gIC8vIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBjYW5ub3QgYmUgZGlyZWN0bHkgdGVzdGVkIHdpdGggUlRMLlxuICAvLyBUaGVzZSBtZXRob2RzIHNob3VsZCBiZSB0ZXN0ZWQgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9ucyBpbiBpbnRlZ3JhdGlvbiB0ZXN0czpcbiAgLy8gLSBvbkNob2ljZUNoYW5nZWQ6IFRlc3QgYnkgc2ltdWxhdGluZyB0eXBpbmcgaW4gY2hvaWNlIGlucHV0c1xuICAvLyAtIG9uQWRkQ2hvaWNlOiBUZXN0IGJ5IGNsaWNraW5nIGFuIFwiQWRkIENob2ljZVwiIGJ1dHRvblxuICAvLyAtIG9uQ2hvaWNlUmVtb3ZlOiBUZXN0IGJ5IGNsaWNraW5nIGEgXCJSZW1vdmVcIiBidXR0b25cbiAgLy8gLSBnZXRWaXNpYmxlQ2hvaWNlczogVGhpcyBpcyB0ZXN0ZWQgaW1wbGljaXRseSBieSBjaGVja2luZyB3aGF0IGNob2ljZXMgYXJlIHJlbmRlcmVkXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksU0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBRUFNLElBQUksQ0FBQ0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLE9BQU87RUFDckNDLFdBQVcsRUFBRTtJQUNYQyxtQkFBbUIsRUFBRUgsSUFBSSxDQUFDSSxFQUFFLENBQUM7RUFDL0IsQ0FBQztFQUNEQyxRQUFRLEVBQUU7SUFDUkMsS0FBSyxFQUFHQyxLQUFLLGlCQUFLZixNQUFBLENBQUFnQixPQUFBLENBQUFDLGFBQUEsUUFBU0YsS0FBUSxDQUFDO0lBQ3BDRyxNQUFNLEVBQUVWLElBQUksQ0FBQ0ksRUFBRSxDQUFDLENBQUM7SUFDakJPLEtBQUssRUFBRVgsSUFBSSxDQUFDSSxFQUFFLENBQUMsQ0FBQztJQUNoQlEsUUFBUSxFQUFFWixJQUFJLENBQUNJLEVBQUUsQ0FBQztFQUNwQixDQUFDO0VBQ0RTLE1BQU0sRUFBRTtJQUNOQyxZQUFZLEVBQUdQLEtBQUssaUJBQUtmLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQUMsYUFBQSxjQUFNRixLQUFLLENBQUNRLFFBQWM7RUFDckQsQ0FBQztFQUNEQyxXQUFXLEVBQUdULEtBQUssaUJBQ2pCZixNQUFBLENBQUFnQixPQUFBLENBQUFDLGFBQUE7SUFBSyxlQUFZO0VBQWMsR0FDNUJGLEtBQUssQ0FBQ1UsSUFBSSxpQkFDVHpCLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQUMsYUFBQSwyQkFDRWpCLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQUMsYUFBQSxjQUFNRixLQUFLLENB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
|