sample skeleton application with dojo toolkit & arcgis js api v 4.30
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

<!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>