Files
konva/test/unit/DragAndDrop-test.js
2014-05-16 22:52:17 +08:00

134 lines
3.3 KiB
JavaScript

suite('DragAndDrop', function() {
// ======================================================
test('test drag and drop properties and methods', function(done) {
var stage = addStage();
var layer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 70,
fill: 'green',
stroke: 'black',
strokeWidth: 4,
name: 'myCircle'
});
stage.add(layer);
layer.add(circle);
setTimeout(function() {
layer.draw();
// test defaults
assert.equal(circle.draggable(), false);
//change properties
circle.setDraggable(true);
//circle.on('click', function(){});
layer.draw();
showHit(layer);
// test new properties
assert.equal(circle.getDraggable(), true);
done();
}, 50);
});
// ======================================================
test('multiple drag and drop sets with setDraggable()', function() {
var stage = addStage();
var layer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: 380,
y: stage.getHeight() / 2,
radius: 70,
strokeWidth: 4,
fill: 'red',
stroke: 'black'
});
circle.setDraggable(true);
assert.equal(circle.getDraggable(), true);
circle.setDraggable(true);
assert.equal(circle.getDraggable(), true);
circle.setDraggable(false);
assert.equal(!circle.getDraggable(), true);
layer.add(circle);
stage.add(layer);
});
// ======================================================
test('right click is not for dragging', function() {
var stage = addStage();
var top = stage.content.getBoundingClientRect().top;
var layer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 70,
fill: 'green',
stroke: 'black',
strokeWidth: 4,
name: 'myCircle',
draggable: true
});
layer.add(circle);
stage.add(layer);
stage._mousedown({
clientX: 291,
clientY: 112 + top,
});
stage._mousemove({
clientX: 311,
clientY: 112 + top,
});
assert(circle.isDragging(), 'dragging is ok');
Kinetic.DD._endDragBefore();
stage._mouseup({
clientX: 291,
clientY: 112 + top
});
Kinetic.DD._endDragAfter({dragEndNode:circle});
stage._mousedown({
clientX: 291,
clientY: 112 + top,
button: 2
});
stage._mousemove({
clientX: 311,
clientY: 112 + top,
button: 2
});
assert(circle.isDragging() === false, 'no dragging with right click');
Kinetic.DD._endDragBefore();
stage._mouseup({
clientX: 291,
clientY: 112 + top,
button: 2
});
Kinetic.DD._endDragAfter({dragEndNode:circle});
});
});