@@ -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+
2946const originalclientWidth = Object . getOwnPropertyDescriptor ( HTMLElement . prototype , 'clientWidth' ) ;
3047const originalclientHeight = Object . getOwnPropertyDescriptor ( HTMLElement . prototype , 'clientHeight' ) ;
3148const 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
170187test ( '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