@pie-element/hotspot 4.8.4-next.135 → 4.8.4-next.1357
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 +263 -0
- package/configure/CHANGELOG.md +233 -0
- package/configure/lib/defaults.js +20 -0
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/hotspot-container.js +26 -12
- package/configure/lib/hotspot-container.js.map +1 -1
- package/configure/lib/hotspot-drawable.js +11 -5
- package/configure/lib/hotspot-drawable.js.map +1 -1
- package/configure/lib/hotspot-palette.js +1 -1
- package/configure/lib/hotspot-palette.js.map +1 -1
- package/configure/lib/hotspot-polygon.js +1 -1
- package/configure/lib/hotspot-polygon.js.map +1 -1
- package/configure/lib/hotspot-rectangle.js +1 -1
- package/configure/lib/hotspot-rectangle.js.map +1 -1
- package/configure/lib/index.js +17 -3
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +107 -13
- package/configure/lib/root.js.map +1 -1
- package/configure/lib/utils.js +18 -4
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +4 -4
- package/configure/src/__tests__/__snapshots__/hotspot-container.test.js.snap +1 -0
- package/configure/src/__tests__/__snapshots__/root.test.js.snap +53 -4
- package/configure/src/defaults.js +20 -0
- package/configure/src/hotspot-container.jsx +16 -5
- package/configure/src/hotspot-drawable.jsx +8 -2
- package/configure/src/index.js +14 -0
- package/configure/src/root.jsx +87 -9
- package/configure/src/utils.js +23 -1
- package/controller/CHANGELOG.md +50 -0
- package/controller/lib/index.js +44 -5
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +1 -1
- package/controller/src/index.js +26 -0
- package/docs/config-schema.json +212 -0
- package/docs/config-schema.json.md +165 -0
- package/docs/demo/generate.js +1 -0
- package/docs/pie-schema.json +49 -0
- package/docs/pie-schema.json.md +36 -0
- package/lib/hotspot/container.js +25 -7
- package/lib/hotspot/container.js.map +1 -1
- package/lib/hotspot/image.js +1 -1
- package/lib/hotspot/image.js.map +1 -1
- package/lib/hotspot/index.js +72 -18
- package/lib/hotspot/index.js.map +1 -1
- package/lib/hotspot/polygon.js +46 -20
- package/lib/hotspot/polygon.js.map +1 -1
- package/lib/hotspot/rectangle.js +46 -20
- package/lib/hotspot/rectangle.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/session-updater.js.map +1 -1
- package/package.json +6 -4
- package/src/__tests__/__snapshots__/{container-test.jsx.snap → container.test.jsx.snap} +8 -0
- package/src/__tests__/__snapshots__/image.test.jsx.snap +43 -0
- package/src/__tests__/__snapshots__/{polygon-test.jsx.snap → polygon.test.jsx.snap} +11 -0
- package/src/__tests__/__snapshots__/{rectangle-test.jsx.snap → rectangle.test.jsx.snap} +11 -0
- package/src/__tests__/{container-test.jsx → container.test.jsx} +57 -0
- package/src/__tests__/{image-test.jsx → image.test.jsx} +0 -0
- package/src/__tests__/polygon.test.jsx +224 -0
- package/src/__tests__/rectangle.test.jsx +233 -0
- package/src/__tests__/{session-updater-test.jsx → session-updater.test.jsx} +0 -0
- package/src/hotspot/container.jsx +23 -3
- package/src/hotspot/index.jsx +68 -8
- package/src/hotspot/polygon.jsx +40 -17
- package/src/hotspot/rectangle.jsx +40 -17
- package/src/index.js +5 -0
- package/src/__tests__/__snapshots__/image-test.jsx.snap +0 -21
- package/src/__tests__/polygon-test.jsx +0 -77
- package/src/__tests__/rectangle-test.jsx +0 -78
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/hotspot",
|
|
3
|
-
"version": "4.8.4-next.
|
|
3
|
+
"version": "4.8.4-next.1357+42d700e42",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": "pie-framework/pie-elements",
|
|
6
6
|
"publishConfig": {
|
|
@@ -9,8 +9,10 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.3",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/
|
|
13
|
-
"@pie-lib/
|
|
12
|
+
"@pie-lib/correct-answer-toggle": "^2.3.46",
|
|
13
|
+
"@pie-lib/math-rendering": "^2.5.0",
|
|
14
|
+
"@pie-lib/render-ui": "^4.13.6",
|
|
15
|
+
"@pie-lib/test-utils": "^0.2.19",
|
|
14
16
|
"konva": "^3.2.5",
|
|
15
17
|
"prop-types": "^15.6.1",
|
|
16
18
|
"react": "^16.8.1",
|
|
@@ -19,7 +21,7 @@
|
|
|
19
21
|
},
|
|
20
22
|
"author": "pie framework developers",
|
|
21
23
|
"license": "ISC",
|
|
22
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "42d700e42127ea8ccd3e7b4f069d918abb490f15",
|
|
23
25
|
"scripts": {
|
|
24
26
|
"postpublish": "../../scripts/postpublish"
|
|
25
27
|
},
|
|
@@ -23,6 +23,7 @@ exports[`Container snapshots hotspot color renders 1`] = `
|
|
|
23
23
|
isEvaluateMode={false}
|
|
24
24
|
onSelectChoice={[MockFunction]}
|
|
25
25
|
outlineColor="blue"
|
|
26
|
+
scale={1}
|
|
26
27
|
session={
|
|
27
28
|
Object {
|
|
28
29
|
"answers": Array [],
|
|
@@ -60,6 +61,7 @@ exports[`Container snapshots image renders 1`] = `
|
|
|
60
61
|
isEvaluateMode={false}
|
|
61
62
|
onSelectChoice={[MockFunction]}
|
|
62
63
|
outlineColor="blue"
|
|
64
|
+
scale={1}
|
|
63
65
|
session={
|
|
64
66
|
Object {
|
|
65
67
|
"answers": Array [],
|
|
@@ -97,6 +99,7 @@ exports[`Container snapshots outline color renders 1`] = `
|
|
|
97
99
|
isEvaluateMode={false}
|
|
98
100
|
onSelectChoice={[MockFunction]}
|
|
99
101
|
outlineColor="red"
|
|
102
|
+
scale={1}
|
|
100
103
|
session={
|
|
101
104
|
Object {
|
|
102
105
|
"answers": Array [],
|
|
@@ -134,6 +137,7 @@ exports[`Container snapshots shapes renders 1`] = `
|
|
|
134
137
|
isEvaluateMode={false}
|
|
135
138
|
onSelectChoice={[MockFunction]}
|
|
136
139
|
outlineColor="blue"
|
|
140
|
+
scale={1}
|
|
137
141
|
session={
|
|
138
142
|
Object {
|
|
139
143
|
"answers": Array [],
|
|
@@ -202,6 +206,7 @@ exports[`HotspotComponent renders snapshot with padding having a size accordingl
|
|
|
202
206
|
>
|
|
203
207
|
<div>
|
|
204
208
|
<img
|
|
209
|
+
alt="hotspot-image"
|
|
205
210
|
height="auto"
|
|
206
211
|
src="data:image/jpeg;base64,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"
|
|
207
212
|
style={
|
|
@@ -223,13 +228,16 @@ exports[`HotspotComponent renders snapshot with padding having a size accordingl
|
|
|
223
228
|
<Layer>
|
|
224
229
|
<WithStyles(RectComponent)
|
|
225
230
|
disabled={false}
|
|
231
|
+
evaluateText={null}
|
|
226
232
|
height={80}
|
|
227
233
|
hotspotColor="#000"
|
|
228
234
|
id="1"
|
|
229
235
|
isEvaluateMode={false}
|
|
230
236
|
key="1"
|
|
237
|
+
markAsCorrect={false}
|
|
231
238
|
onClick={[MockFunction]}
|
|
232
239
|
outlineColor="#FAFAFA"
|
|
240
|
+
scale={1}
|
|
233
241
|
selected={true}
|
|
234
242
|
strokeWidth={50}
|
|
235
243
|
width={80}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Image snapshots image renders 1`] = `
|
|
4
|
+
<Group>
|
|
5
|
+
<Image
|
|
6
|
+
height={20}
|
|
7
|
+
image={null}
|
|
8
|
+
onMouseEnter={[Function]}
|
|
9
|
+
onMouseLeave={[Function]}
|
|
10
|
+
width={20}
|
|
11
|
+
x={5}
|
|
12
|
+
y={5}
|
|
13
|
+
/>
|
|
14
|
+
</Group>
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
exports[`Image snapshots tooltip renders 1`] = `
|
|
18
|
+
<Group>
|
|
19
|
+
<Image
|
|
20
|
+
height={20}
|
|
21
|
+
image={null}
|
|
22
|
+
onMouseEnter={[Function]}
|
|
23
|
+
onMouseLeave={[Function]}
|
|
24
|
+
width={20}
|
|
25
|
+
x={5}
|
|
26
|
+
y={5}
|
|
27
|
+
/>
|
|
28
|
+
</Group>
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
exports[`Image snapshots x y position renders 1`] = `
|
|
32
|
+
<Group>
|
|
33
|
+
<Image
|
|
34
|
+
height={20}
|
|
35
|
+
image={null}
|
|
36
|
+
onMouseEnter={[Function]}
|
|
37
|
+
onMouseLeave={[Function]}
|
|
38
|
+
width={20}
|
|
39
|
+
x={10}
|
|
40
|
+
y={10}
|
|
41
|
+
/>
|
|
42
|
+
</Group>
|
|
43
|
+
`;
|
|
@@ -8,6 +8,8 @@ exports[`Polygon snapshots evaluate with correct answer renders 1`] = `
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
disabled={false}
|
|
11
|
+
evaluateText="Correctly
|
|
12
|
+
selected"
|
|
11
13
|
height={200}
|
|
12
14
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
13
15
|
id="1"
|
|
@@ -31,6 +33,7 @@ exports[`Polygon snapshots evaluate with correct answer renders 1`] = `
|
|
|
31
33
|
},
|
|
32
34
|
]
|
|
33
35
|
}
|
|
36
|
+
scale={1}
|
|
34
37
|
selected={false}
|
|
35
38
|
strokeWidth={5}
|
|
36
39
|
/>
|
|
@@ -44,6 +47,7 @@ exports[`Polygon snapshots hotspot color renders 1`] = `
|
|
|
44
47
|
}
|
|
45
48
|
}
|
|
46
49
|
disabled={false}
|
|
50
|
+
evaluateText={null}
|
|
47
51
|
height={200}
|
|
48
52
|
hotspotColor="rgba(217, 30, 24, 0.65)"
|
|
49
53
|
id="1"
|
|
@@ -67,6 +71,7 @@ exports[`Polygon snapshots hotspot color renders 1`] = `
|
|
|
67
71
|
},
|
|
68
72
|
]
|
|
69
73
|
}
|
|
74
|
+
scale={1}
|
|
70
75
|
selected={false}
|
|
71
76
|
strokeWidth={5}
|
|
72
77
|
/>
|
|
@@ -80,6 +85,7 @@ exports[`Polygon snapshots outline color renders 1`] = `
|
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
disabled={false}
|
|
88
|
+
evaluateText={null}
|
|
83
89
|
height={200}
|
|
84
90
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
85
91
|
id="1"
|
|
@@ -103,6 +109,7 @@ exports[`Polygon snapshots outline color renders 1`] = `
|
|
|
103
109
|
},
|
|
104
110
|
]
|
|
105
111
|
}
|
|
112
|
+
scale={1}
|
|
106
113
|
selected={false}
|
|
107
114
|
strokeWidth={5}
|
|
108
115
|
/>
|
|
@@ -116,6 +123,7 @@ exports[`Polygon snapshots outline width renders with default border width 1`] =
|
|
|
116
123
|
}
|
|
117
124
|
}
|
|
118
125
|
disabled={false}
|
|
126
|
+
evaluateText={null}
|
|
119
127
|
height={200}
|
|
120
128
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
121
129
|
id="1"
|
|
@@ -139,6 +147,7 @@ exports[`Polygon snapshots outline width renders with default border width 1`] =
|
|
|
139
147
|
},
|
|
140
148
|
]
|
|
141
149
|
}
|
|
150
|
+
scale={1}
|
|
142
151
|
selected={false}
|
|
143
152
|
strokeWidth={5}
|
|
144
153
|
/>
|
|
@@ -152,6 +161,7 @@ exports[`Polygon snapshots outline width renders with given border width 1`] = `
|
|
|
152
161
|
}
|
|
153
162
|
}
|
|
154
163
|
disabled={false}
|
|
164
|
+
evaluateText={null}
|
|
155
165
|
height={200}
|
|
156
166
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
157
167
|
id="1"
|
|
@@ -175,6 +185,7 @@ exports[`Polygon snapshots outline width renders with given border width 1`] = `
|
|
|
175
185
|
},
|
|
176
186
|
]
|
|
177
187
|
}
|
|
188
|
+
scale={1}
|
|
178
189
|
selected={false}
|
|
179
190
|
strokeWidth={10}
|
|
180
191
|
/>
|
|
@@ -8,6 +8,8 @@ exports[`Rectangle snapshots evaluate with correct answer renders 1`] = `
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
disabled={false}
|
|
11
|
+
evaluateText="Correctly
|
|
12
|
+
selected"
|
|
11
13
|
height={200}
|
|
12
14
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
13
15
|
id="1"
|
|
@@ -15,6 +17,7 @@ exports[`Rectangle snapshots evaluate with correct answer renders 1`] = `
|
|
|
15
17
|
isEvaluateMode={true}
|
|
16
18
|
onClick={[MockFunction]}
|
|
17
19
|
outlineColor="blue"
|
|
20
|
+
scale={1}
|
|
18
21
|
selected={false}
|
|
19
22
|
strokeWidth={5}
|
|
20
23
|
width={300}
|
|
@@ -31,6 +34,7 @@ exports[`Rectangle snapshots hotspot color renders 1`] = `
|
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
disabled={false}
|
|
37
|
+
evaluateText={null}
|
|
34
38
|
height={200}
|
|
35
39
|
hotspotColor="rgba(217, 30, 24, 0.65)"
|
|
36
40
|
id="1"
|
|
@@ -38,6 +42,7 @@ exports[`Rectangle snapshots hotspot color renders 1`] = `
|
|
|
38
42
|
isEvaluateMode={false}
|
|
39
43
|
onClick={[MockFunction]}
|
|
40
44
|
outlineColor="blue"
|
|
45
|
+
scale={1}
|
|
41
46
|
selected={false}
|
|
42
47
|
strokeWidth={5}
|
|
43
48
|
width={300}
|
|
@@ -54,6 +59,7 @@ exports[`Rectangle snapshots outline color renders 1`] = `
|
|
|
54
59
|
}
|
|
55
60
|
}
|
|
56
61
|
disabled={false}
|
|
62
|
+
evaluateText={null}
|
|
57
63
|
height={200}
|
|
58
64
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
59
65
|
id="1"
|
|
@@ -61,6 +67,7 @@ exports[`Rectangle snapshots outline color renders 1`] = `
|
|
|
61
67
|
isEvaluateMode={false}
|
|
62
68
|
onClick={[MockFunction]}
|
|
63
69
|
outlineColor="red"
|
|
70
|
+
scale={1}
|
|
64
71
|
selected={false}
|
|
65
72
|
strokeWidth={5}
|
|
66
73
|
width={300}
|
|
@@ -77,6 +84,7 @@ exports[`Rectangle snapshots outline width renders with default border width 1`]
|
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
86
|
disabled={false}
|
|
87
|
+
evaluateText={null}
|
|
80
88
|
height={200}
|
|
81
89
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
82
90
|
id="1"
|
|
@@ -84,6 +92,7 @@ exports[`Rectangle snapshots outline width renders with default border width 1`]
|
|
|
84
92
|
isEvaluateMode={false}
|
|
85
93
|
onClick={[MockFunction]}
|
|
86
94
|
outlineColor="blue"
|
|
95
|
+
scale={1}
|
|
87
96
|
selected={false}
|
|
88
97
|
strokeWidth={5}
|
|
89
98
|
width={300}
|
|
@@ -100,6 +109,7 @@ exports[`Rectangle snapshots outline width renders with given border width 1`] =
|
|
|
100
109
|
}
|
|
101
110
|
}
|
|
102
111
|
disabled={false}
|
|
112
|
+
evaluateText={null}
|
|
103
113
|
height={200}
|
|
104
114
|
hotspotColor="rgba(137, 183, 244, 0.65)"
|
|
105
115
|
id="1"
|
|
@@ -107,6 +117,7 @@ exports[`Rectangle snapshots outline width renders with given border width 1`] =
|
|
|
107
117
|
isEvaluateMode={false}
|
|
108
118
|
onClick={[MockFunction]}
|
|
109
119
|
outlineColor="blue"
|
|
120
|
+
scale={1}
|
|
110
121
|
selected={false}
|
|
111
122
|
strokeWidth={10}
|
|
112
123
|
width={300}
|
|
@@ -4,9 +4,18 @@ import { shallow } from 'enzyme';
|
|
|
4
4
|
import toJson from 'enzyme-to-json';
|
|
5
5
|
import Konva from 'konva';
|
|
6
6
|
|
|
7
|
+
import { shallowChild } from '@pie-lib/test-utils';
|
|
8
|
+
import CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';
|
|
9
|
+
|
|
7
10
|
import Container, { Container as ContainerComp } from '../hotspot/container';
|
|
8
11
|
import HotspotComponent from '../hotspot/index';
|
|
9
12
|
|
|
13
|
+
global.MutationObserver = class {
|
|
14
|
+
constructor(callback) {}
|
|
15
|
+
disconnect() {}
|
|
16
|
+
observe(element, initObject) {}
|
|
17
|
+
};
|
|
18
|
+
|
|
10
19
|
Konva.isBrowser = false;
|
|
11
20
|
|
|
12
21
|
describe('HotspotComponent', () => {
|
|
@@ -61,6 +70,54 @@ describe('HotspotComponent', () => {
|
|
|
61
70
|
});
|
|
62
71
|
});
|
|
63
72
|
|
|
73
|
+
describe('CorrectAnswerToggle', () => {
|
|
74
|
+
let testWrapper, component, toggle;
|
|
75
|
+
const model = {
|
|
76
|
+
mode: 'evaluate',
|
|
77
|
+
responseCorrect: false,
|
|
78
|
+
};
|
|
79
|
+
const testWrapperFn = (props) => shallowChild(HotspotComponent, {
|
|
80
|
+
model: {
|
|
81
|
+
...model,
|
|
82
|
+
...props
|
|
83
|
+
}
|
|
84
|
+
}, 1);
|
|
85
|
+
|
|
86
|
+
beforeEach(() => {
|
|
87
|
+
testWrapper = testWrapperFn({});
|
|
88
|
+
component = testWrapper();
|
|
89
|
+
toggle = component.find(CorrectAnswerToggle);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('renders when the mode is evaluate and the response is incorrect', () => {
|
|
93
|
+
expect(toggle.length).toEqual(1);
|
|
94
|
+
expect(toggle.prop('show')).toEqual(true);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('does not render outside of evaluate mode', () => {
|
|
98
|
+
const tw = testWrapperFn({ mode: 'gather' });
|
|
99
|
+
const c = tw();
|
|
100
|
+
const t = c.find(CorrectAnswerToggle);
|
|
101
|
+
expect(t.length).toEqual(0);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('does not render if the response is correct', () => {
|
|
105
|
+
const tw = testWrapperFn({ responseCorrect: true });
|
|
106
|
+
const c = tw();
|
|
107
|
+
const t = c.find(CorrectAnswerToggle);
|
|
108
|
+
expect(t.length).toEqual(0);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it('toggles the state', () => {
|
|
112
|
+
component.setState({ showCorrect: false });
|
|
113
|
+
expect(component.state('showCorrect')).toEqual(false);
|
|
114
|
+
expect(toggle.prop('toggled')).toEqual(false);
|
|
115
|
+
component.instance().onToggle();
|
|
116
|
+
expect(component.state('showCorrect')).toEqual(true);
|
|
117
|
+
expect(component.find(CorrectAnswerToggle).prop('toggled')).toEqual(true);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
64
121
|
describe('Container', () => {
|
|
65
122
|
let onSelectChoice, wrapper;
|
|
66
123
|
|
|
File without changes
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import _ from 'lodash';
|
|
3
|
+
import { shallow } from 'enzyme';
|
|
4
|
+
import toJson from 'enzyme-to-json';
|
|
5
|
+
import Konva from 'konva';
|
|
6
|
+
import { Line } from 'react-konva';
|
|
7
|
+
|
|
8
|
+
import { shallowChild } from '@pie-lib/test-utils';
|
|
9
|
+
|
|
10
|
+
import Polygon from '../hotspot/polygon';
|
|
11
|
+
import Image from '../hotspot/image';
|
|
12
|
+
import { faCorrect, faWrong } from '../hotspot/icons';
|
|
13
|
+
|
|
14
|
+
Konva.isBrowser = false;
|
|
15
|
+
|
|
16
|
+
describe('Polygon', () => {
|
|
17
|
+
let onClick, wrapper;
|
|
18
|
+
|
|
19
|
+
const mkWrapper = (opts = {}) => {
|
|
20
|
+
opts = _.extend(
|
|
21
|
+
{
|
|
22
|
+
classes: {
|
|
23
|
+
base: 'base'
|
|
24
|
+
},
|
|
25
|
+
height: 200,
|
|
26
|
+
hotspotColor: 'rgba(137, 183, 244, 0.65)',
|
|
27
|
+
id: '1',
|
|
28
|
+
isCorrect: false,
|
|
29
|
+
isEvaluateMode: false,
|
|
30
|
+
evaluateText: null,
|
|
31
|
+
disabled: false,
|
|
32
|
+
outlineColor: 'blue',
|
|
33
|
+
selected: false,
|
|
34
|
+
points: [{ x: 94, y: 4 }, { x: 89, y: 4 }, { x: 36, y: 40 }]
|
|
35
|
+
},
|
|
36
|
+
opts
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
return shallow(<Polygon {...opts} onClick={onClick} />);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
onClick = jest.fn();
|
|
44
|
+
wrapper = mkWrapper();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
describe('snapshots', () => {
|
|
48
|
+
describe('outline color', () => {
|
|
49
|
+
it('renders', () => {
|
|
50
|
+
const wrapper = mkWrapper({ outlineColor: 'red' });
|
|
51
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
describe('outline width', () => {
|
|
56
|
+
it('renders with default border width', () => {
|
|
57
|
+
const wrapper = mkWrapper();
|
|
58
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('renders with given border width', () => {
|
|
62
|
+
const wrapper = mkWrapper({ strokeWidth: 10 });
|
|
63
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
describe('hotspot color', () => {
|
|
69
|
+
it('renders', () => {
|
|
70
|
+
const wrapper = mkWrapper({ hotspotColor: 'rgba(217, 30, 24, 0.65)' });
|
|
71
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe('evaluate with correct answer', () => {
|
|
76
|
+
it('renders', () => {
|
|
77
|
+
const wrapper = mkWrapper({ isEvaluateMode: true, isCorrect: true, evaluateText: 'Correctly\nselected' });
|
|
78
|
+
expect(toJson(wrapper)).toMatchSnapshot();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('in evaluate mode', () => {
|
|
84
|
+
const defaultModel = {
|
|
85
|
+
height: 200,
|
|
86
|
+
hotspotColor: 'rgba(137, 183, 244, 0.65)',
|
|
87
|
+
id: '1',
|
|
88
|
+
isCorrect: false,
|
|
89
|
+
isEvaluateMode: true,
|
|
90
|
+
evaluateText: null,
|
|
91
|
+
disabled: true,
|
|
92
|
+
outlineColor: 'blue',
|
|
93
|
+
strokeWidth: 5,
|
|
94
|
+
selected: false,
|
|
95
|
+
points: [{ x: 94, y: 4 }, { x: 89, y: 4 }, { x: 36, y: 40 }],
|
|
96
|
+
markAsCorrect: false,
|
|
97
|
+
showCorrectEnabled: false,
|
|
98
|
+
onClick
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const getComponents = (model) => {
|
|
102
|
+
const testWrapper = shallowChild(Polygon, {
|
|
103
|
+
...defaultModel,
|
|
104
|
+
...model
|
|
105
|
+
}, 1);
|
|
106
|
+
const polygonComponent = testWrapper();
|
|
107
|
+
const lineComponent = polygonComponent.find(Line);
|
|
108
|
+
return {
|
|
109
|
+
polygonComponent,
|
|
110
|
+
lineComponent
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
describe('when correctly selected', () => {
|
|
115
|
+
const { polygonComponent, lineComponent } = getComponents({
|
|
116
|
+
selected: true,
|
|
117
|
+
isCorrect: true
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it('should have a blue outline', () => {
|
|
121
|
+
expect(lineComponent.prop('stroke')).toEqual('blue');
|
|
122
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(defaultModel.strokeWidth);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it('should have a green checkmark icon', () => {
|
|
126
|
+
const imgComponent = polygonComponent.find(Image);
|
|
127
|
+
expect(imgComponent.length).toEqual(1);
|
|
128
|
+
expect(imgComponent.prop('src')).toEqual(faCorrect);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
describe('when correctly not selected', () => {
|
|
133
|
+
const { polygonComponent, lineComponent } = getComponents({
|
|
134
|
+
selected: false,
|
|
135
|
+
isCorrect: true
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it('should have no outline', () => {
|
|
139
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(0);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('should have no icon', () => {
|
|
143
|
+
const imgComponent = polygonComponent.find(Image);
|
|
144
|
+
expect(imgComponent.length).toEqual(0);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
describe('when incorrectly selected', () => {
|
|
149
|
+
const { polygonComponent, lineComponent } = getComponents({
|
|
150
|
+
selected: true,
|
|
151
|
+
isCorrect: false
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('should have a red outline', () => {
|
|
155
|
+
expect(lineComponent.prop('stroke')).toEqual('red');
|
|
156
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(defaultModel.strokeWidth);
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('should have a red x icon', () => {
|
|
160
|
+
const imgComponent = polygonComponent.find(Image);
|
|
161
|
+
expect(imgComponent.length).toEqual(1);
|
|
162
|
+
expect(imgComponent.prop('src')).toEqual(faWrong);
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
describe('when incorrectly not selected', () => {
|
|
167
|
+
const { polygonComponent, lineComponent } = getComponents({
|
|
168
|
+
selected: false,
|
|
169
|
+
isCorrect: false
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it('should have no outline', () => {
|
|
173
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(0);
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('should have a red x icon', () => {
|
|
177
|
+
const imgComponent = polygonComponent.find(Image);
|
|
178
|
+
expect(imgComponent.length).toEqual(1);
|
|
179
|
+
expect(imgComponent.prop('src')).toEqual(faWrong);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
describe('when showing correct answer (showCorrectEnabled = true)', () => {
|
|
184
|
+
it('should have a green outline', () => {
|
|
185
|
+
const { lineComponent } = getComponents({
|
|
186
|
+
showCorrectEnabled: true,
|
|
187
|
+
markAsCorrect: true
|
|
188
|
+
});
|
|
189
|
+
expect(lineComponent.prop('stroke')).toEqual('green');
|
|
190
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(defaultModel.strokeWidth);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
it('should have a green checkmark icon', () => {
|
|
194
|
+
const { polygonComponent } = getComponents({
|
|
195
|
+
showCorrectEnabled: true,
|
|
196
|
+
markAsCorrect: true
|
|
197
|
+
});
|
|
198
|
+
const imgComponent = polygonComponent.find(Image);
|
|
199
|
+
expect(imgComponent.prop('src')).toEqual(faCorrect);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it('should not be selected if the answer is incorrect', () => {
|
|
203
|
+
const { lineComponent } = getComponents({
|
|
204
|
+
showCorrectEnabled: true,
|
|
205
|
+
markAsCorrect: false,
|
|
206
|
+
selected: true,
|
|
207
|
+
isCorrect: false
|
|
208
|
+
});
|
|
209
|
+
expect(lineComponent.prop('strokeWidth')).toEqual(0);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it('should not render an icon if the answer is incorrect', () => {
|
|
213
|
+
const { polygonComponent } = getComponents({
|
|
214
|
+
showCorrectEnabled: true,
|
|
215
|
+
markAsCorrect: false,
|
|
216
|
+
selected: true,
|
|
217
|
+
isCorrect: false
|
|
218
|
+
});
|
|
219
|
+
const imgComponent = polygonComponent.find(Image);
|
|
220
|
+
expect(imgComponent.length).toEqual(0);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
});
|