@@ -154,8 +154,12 @@ QUnit.module('elementTools', function(hooks) {
154
154
QUnit . test ( 'position (angle ' + testCase . angle + ')' , function ( assert ) {
155
155
var angle = testCase . angle ;
156
156
var position = { x : 10 , y : 10 } ;
157
+ const setPositionSpy = sinon . spy ( ) ;
158
+ const resetPositionSpy = sinon . spy ( ) ;
157
159
var CustomControl = joint . elementTools . Control . extend ( {
158
- getPosition : function ( ) { return position ; }
160
+ getPosition : function ( ) { return position ; } ,
161
+ setPosition : setPositionSpy ,
162
+ resetPosition : resetPositionSpy
159
163
} ) ;
160
164
var control = new CustomControl ;
161
165
element . rotate ( angle ) ;
@@ -172,6 +176,36 @@ QUnit.module('elementTools', function(hooks) {
172
176
resultingPosition = control . vel . getBBox ( { target : paper . svg } ) . center ( ) ;
173
177
expectedPosition = element . position ( ) . offset ( position ) . rotate ( bbox . center ( ) , - angle ) ;
174
178
assert . ok ( resultingPosition . round ( ) . equals ( expectedPosition . round ( ) ) ) ;
179
+ // 3. `setPosition()`
180
+ const clientX = 11 ;
181
+ const clientY = 13 ;
182
+ const relativePosition = element . getRelativePointFromAbsolute (
183
+ paper . clientToLocalPoint ( clientX , clientY )
184
+ ) ;
185
+ simulate . mousedown ( { clientX : 0 , clientY : 0 , el : control . el } ) ;
186
+ simulate . mousemove ( { clientX, clientY, el : control . el } ) ;
187
+ simulate . mouseup ( { clientX, clientY, el : control . el } ) ;
188
+ assert . ok ( setPositionSpy . calledOnce ) ;
189
+ assert . ok (
190
+ setPositionSpy . calledWithExactly (
191
+ elementView ,
192
+ sinon . match ( relativePosition . toJSON ( ) ) ,
193
+ sinon . match . instanceOf ( joint . mvc . Event )
194
+ )
195
+ ) ;
196
+ assert . notOk ( resetPositionSpy . called ) ;
197
+ // 4. `resetPosition()`
198
+ setPositionSpy . resetHistory ( ) ;
199
+ resetPositionSpy . resetHistory ( ) ;
200
+ simulate . mouseevent ( { type : 'dblclick' , el : control . el } ) ;
201
+ assert . ok ( resetPositionSpy . calledOnce ) ;
202
+ assert . ok (
203
+ resetPositionSpy . calledWithExactly (
204
+ elementView ,
205
+ sinon . match . instanceOf ( joint . mvc . Event )
206
+ )
207
+ ) ;
208
+ assert . notOk ( setPositionSpy . called ) ;
175
209
} ) ;
176
210
} ) ;
177
211
} ) ;
0 commit comments