Skip to content

Commit ed4aa76

Browse files
authored
fix: tests using pageX, pageY MousEvent (#39)
1 parent b231863 commit ed4aa76

File tree

1 file changed

+37
-20
lines changed

1 file changed

+37
-20
lines changed

test/ColorBox.test.js

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,23 @@ const palette = {
2626
darkBlue: 'darkBlue',
2727
};
2828

29+
// See : https://github.com/testing-library/react-testing-library/issues/268
30+
class FakeMouseEvent extends MouseEvent {
31+
constructor(type, values) {
32+
const { pageX, pageY, offsetX, offsetY, x, y, ...mouseValues } = values;
33+
super(type, mouseValues);
34+
35+
Object.assign(this, {
36+
offsetX: offsetX || 0,
37+
offsetY: offsetY || 0,
38+
pageX: pageX || 0,
39+
pageY: pageY || 0,
40+
x: x || 0,
41+
y: y || 0,
42+
});
43+
}
44+
}
45+
2946
const originalclientWidth = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'clientWidth');
3047
const originalclientHeight = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'clientHeight');
3148
const originalgetBoundingClientRect = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'getBoundingClientRect');
@@ -125,46 +142,46 @@ test('ColorBox hsvgradient cursor changes', async () => {
125142
expect(value).toBe(undefined);
126143
fireEvent(
127144
component,
128-
new MouseEvent('mousemove', {
145+
new FakeMouseEvent('mousemove', {
129146
bubbles: true,
130147
}),
131148
);
132149
expect(onChange).toHaveBeenCalledTimes(0);
133150
fireEvent(
134151
component,
135-
new MouseEvent('mousedown', {
152+
new FakeMouseEvent('mousedown', {
136153
bubbles: true,
137154
}),
138155
);
139156
expect(onChange).toHaveBeenCalledTimes(0);
140157
fireEvent(
141158
component,
142-
new MouseEvent('mousemove', {
159+
new FakeMouseEvent('mousemove', {
143160
bubbles: true,
144-
clientX: 25,
145-
clientY: 42,
161+
pageX: 25,
162+
pageY: 42,
146163
buttons: 1,
147164
}),
148165
);
149166
fireEvent(
150167
component,
151-
new MouseEvent('mousemove', {
168+
new FakeMouseEvent('mousemove', {
152169
bubbles: true,
153-
clientX: 1000,
154-
clientY: 1000,
170+
pageX: 1000,
171+
pageY: 1000,
155172
buttons: 1,
156173
}),
157174
);
158175
fireEvent(
159176
component,
160-
new MouseEvent('mouseup', {
177+
new FakeMouseEvent('mouseup', {
161178
bubbles: true,
162-
clientX: -500,
163-
clientY: -600,
179+
pageX: -500,
180+
pageY: -600,
164181
}),
165182
);
166183
expect(onChange).toHaveBeenCalledTimes(3);
167-
expect(value.name).toBe('black');
184+
expect(value.name).toBe('white');
168185
});
169186

170187
test('ColorBox sliders onChange', async () => {
@@ -196,16 +213,16 @@ test('ColorBox sliders onChange', async () => {
196213
expect(span).toHaveStyle('left: 0%');
197214
fireEvent(
198215
span,
199-
new MouseEvent('mousedown', {
216+
new FakeMouseEvent('mousedown', {
200217
bubbles: true,
201218
}),
202219
);
203220
fireEvent(
204221
span,
205-
new MouseEvent('mouseup', {
222+
new FakeMouseEvent('mouseup', {
206223
bubbles: true,
207-
clientX: -500,
208-
clientY: -600,
224+
pageX: -500,
225+
pageY: -600,
209226
}),
210227
);
211228
expect(value.name).toBe('red');
@@ -218,16 +235,16 @@ test('ColorBox sliders onChange', async () => {
218235
expect(span).toHaveStyle('left: 100%');
219236
fireEvent(
220237
span,
221-
new MouseEvent('mousedown', {
238+
new FakeMouseEvent('mousedown', {
222239
bubbles: true,
223240
}),
224241
);
225242
fireEvent(
226243
span,
227-
new MouseEvent('mouseup', {
244+
new FakeMouseEvent('mouseup', {
228245
bubbles: true,
229-
clientX: -500,
230-
clientY: -600,
246+
pageX: -500,
247+
pageY: -600,
231248
}),
232249
);
233250
expect(value.name).toBe('red');

0 commit comments

Comments
 (0)