You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.0 KiB
230 lines
6.0 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" |
|
"http://www.w3.org/TR/html4/strict.dtd"> |
|
<html> |
|
<head> |
|
<title>robot Tree Mouse Test</title> |
|
|
|
<style> |
|
@import "../../../../util/doh/robot/robot.css"; |
|
</style> |
|
|
|
<script type="text/javascript" src="../../../../dojo/dojo.js"></script> |
|
|
|
<script type="text/javascript"> |
|
require([ |
|
"doh/runner", "dojo/robotx", |
|
"dojo/aspect", "dojo/query", |
|
"dijit/tests/helpers", "dojo/domReady!" |
|
], function(doh, robot, aspect, query, helpers){ |
|
|
|
robot.initRobot('../test_Tree.html'); |
|
|
|
var registry, focus, mytree, africa, asia; |
|
|
|
doh.register("_setup", [ |
|
{ |
|
name: "wait for widgets to load", |
|
timeout: 20000, |
|
runTest: helpers.waitForLoad |
|
}, |
|
function setVars(){ |
|
registry = robot.window.require("dijit/registry"); |
|
focus = robot.window.require("dijit/focus"); |
|
mytree = registry.byId("mytree"); |
|
|
|
// find TreeNodes for Africa, Asia (this assumes that we haven't loaded any of mytree's |
|
// grandchild TreeNodes yet) |
|
var nodes = query(".dijitTreeLabel"); |
|
africa = registry.getEnclosingWidget(nodes[1]); |
|
asia = registry.getEnclosingWidget(nodes[2]); |
|
} |
|
]); |
|
|
|
function toggle(func, expanded){ |
|
return function(){ |
|
var d = new doh.Deferred(); |
|
|
|
doh.is(expanded, africa.isExpanded, "original state"); |
|
|
|
func(d); |
|
|
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.is(!expanded, africa.isExpanded, "after state"); |
|
}), 500); |
|
|
|
return d; |
|
}; |
|
} |
|
|
|
doh.register("label click", [ |
|
{ |
|
name: "click to open", |
|
timeout: 8000, |
|
runTest: toggle(function(d){ |
|
robot.mouseMoveAt(africa.labelNode); |
|
robot.mouseClick({left:true}, 100); |
|
robot.sequence(d.getTestErrback(function(){ |
|
doh.is(1, robot.window.mouseDowns, "mouse down reported"); |
|
}), 500); |
|
}, false) |
|
}, |
|
|
|
{ |
|
name: "click to close", |
|
timeout: 8000, |
|
runTest: toggle(function(){ |
|
robot.mouseClick({left:true}, 100); |
|
}, true) |
|
}, |
|
|
|
{ |
|
name: "double click to open", |
|
timeout: 8000, |
|
setUp: function(){ |
|
mytree.openOnClick = false; |
|
mytree.openOnDblClick = true; |
|
}, |
|
runTest: toggle(function(){ |
|
robot.mouseClick({left:true}, 100); |
|
robot.mouseClick({left:true}, 100); |
|
}, false) |
|
}, |
|
|
|
{ |
|
name: "double click to close", |
|
timeout: 8000, |
|
runTest: toggle(function(){ |
|
robot.mouseClick({left:true}, 100); |
|
robot.mouseClick({left:true}, 100); |
|
}, true) |
|
} |
|
]); |
|
|
|
doh.register("not a click", [ |
|
{ |
|
name: "setup", |
|
timeout: 8000, |
|
runTest: function(){ |
|
mytree.set("openOnClick", true); |
|
return mytree.collapseAll().then(function(){ |
|
return mytree.set("path", ["continentRoot", "EU", "FR"]); |
|
}); |
|
} |
|
}, |
|
|
|
{ |
|
name: "mouse down france, up on italy", |
|
timeout: 8000, |
|
runTest: function(){ |
|
var labels = query(".dijitTreeLabel"), |
|
europe = labels.filter(function(node){ |
|
return node.innerHTML == "Europe"; |
|
})[0], |
|
france = labels.filter(function(node){ |
|
return node.innerHTML == "France"; |
|
})[0], |
|
italy = labels.filter(function(node){ |
|
return node.innerHTML == "Italy"; |
|
})[0]; |
|
|
|
var d = new doh.Deferred(); |
|
|
|
robot.mouseMoveAt(france, 500, 0); |
|
robot.mousePress({left:true}, 500); |
|
robot.mouseMoveAt(italy, 500, 0); |
|
robot.mouseRelease({left:true}, 500); |
|
robot.sequence(d.getTestCallback(function(){ |
|
var europeNode = registry.getEnclosingWidget(europe); |
|
doh.t(europeNode.isExpanded, "europe node still expanded"); |
|
doh.isNot("Europe", mytree.focusedChild.label, "focus didn't shift to Europe"); |
|
}), 500); |
|
|
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.register("focus", [ |
|
{ |
|
name: "setup", |
|
runTest: function(){ |
|
// prevent TreeNodes from moving around as we are moving the mouse to find them |
|
mytree.set("openOnClick", false); |
|
} |
|
}, |
|
{ |
|
name: "focus africa", |
|
timeout: 8000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
robot.mouseMoveAt(africa.labelNode); |
|
robot.mouseClick({left:true}, 100); |
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.is("Africa", helpers.innerText(focus.curNode)); |
|
}), 500); |
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "blur tree", |
|
timeout: 8000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
robot.mouseMoveAt("mytree_before"); |
|
robot.mouseClick({left:true}, 100); |
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.is("mytree_before", focus.curNode.id); |
|
}), 500); |
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "click on asia's expando", |
|
timeout: 8000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(), |
|
africaGotFocus; |
|
aspect.after(africa, "focus", function(){ |
|
africaGotFocus = true; |
|
}); |
|
robot.mouseMoveAt(asia.expandoNode); |
|
robot.mouseClick({left:true}, 100); |
|
robot.sequence(d.getTestCallback(function(){ |
|
// Clicking the expando or anywhere on the row should focus that row. |
|
// In addition, there shouldn't even be a momentary (possibly scroll inducing) focus on |
|
// the previously focused row. |
|
doh.is("Asia", helpers.innerText(focus.curNode)); |
|
doh.f(africaGotFocus, "africa didn't get momentary focus"); |
|
}), 500); |
|
return d; |
|
} |
|
}, |
|
|
|
{ |
|
name: "focus long label", |
|
timeout: 8000, |
|
runTest: function(){ |
|
var d = new doh.Deferred(); |
|
var thinTree = registry.byId('thinTree'); |
|
var rootNode = thinTree.rootNode; |
|
|
|
robot.mouseMoveAt(rootNode.expandoNode); |
|
robot.mouseClick({left: true}, 100); |
|
robot.sequence(d.getTestCallback(function(){ |
|
doh.f(rootNode.isExpanded, 'Clicking expando of node with long label should collapse node'); |
|
doh.is(0, thinTree.domNode.scrollLeft, 'Focusing node with long label should not scroll container'); |
|
}), 500); |
|
return d; |
|
} |
|
} |
|
]); |
|
|
|
doh.run(); |
|
}); |
|
|
|
</script> |
|
</head> |
|
</html> |
|
|
|
|