dijit
Version:
Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u
169 lines (137 loc) • 4.83 kB
HTML
<!-- Remove in 2.0, replaced by dijit/tests/focus.html -->
<html>
<head>
<title>Dijit focus manager DOH Robot test</title>
<style>
@import "../../../../util/doh/robot/robot.css";
</style>
<!-- required: dojo.js -->
<script type="text/javascript" src="../../../../dojo/dojo.js"></script>
<script type="text/javascript">
dojo.require("dijit.robotx");
dojo.ready(function(){
doh.robot.initRobot('../test_FocusManager.html');
doh.register("Dijit focus manager low level tests", [
{
name: "set timer to save focus and selection",
timeout: 4000,
runTest: function(){
var d = new doh.Deferred();
doh.robot.sequence(function(){
dojo.byId("delay_save").focus();
}, 500);
doh.robot.keyPress(dojo.keys.ENTER, 500);
doh.robot.sequence(d.getTestCallback(function(){
// This is just here to tell DOH that test is finished
}), 500);
return d;
}
},
{
name: "focus textarea and select some text",
timeout: 8000,
runTest: function(){
var d = new doh.Deferred();
dojo.byId("textarea").focus();
// Position caret at " there!"
if(dojo.isMac){
doh.robot.keyPress(dojo.keys.LEFT_ARROW, 20, {meta: true});
}else{
doh.robot.keyPress(dojo.keys.HOME, 20, {});
}
for(var i=0; i<5; i++){
doh.robot.keyPress(dojo.keys.RIGHT_ARROW, 20, {});
}
// select " there"
for(i=0; i<6; i++){
doh.robot.keyPress(dojo.keys.RIGHT_ARROW, 20, {shift: true});
}
doh.robot.sequence(d.getTestCallback(function(){
// Wait for selection and focus to be copied
}), 3000);
return d;
}
},
{
name: "restore focus and selection",
timeout: 8000,
runTest: function(){
var d = new doh.Deferred();
// Focus somewhere else
doh.robot.sequence(function(){
dojo.byId("input1").focus();
}, 500);
// Press restore button
doh.robot.sequence(function(){
dojo.byId("restore").focus();
}, 500);
doh.robot.keyPress(dojo.keys.SPACE, 500);
//Move cursor to unselect the text
for(i=0; i<2; i++){
doh.robot.keyPress(dojo.keys.LEFT_ARROW, 20, {shift: false});
}
// Press restore button again, should restore previous selection.
doh.robot.sequence(function(){
dojo.byId("restore").focus();
}, 500);
doh.robot.keyPress(dojo.keys.SPACE, 500);
// Focus should have been moved back to textarea, and
// " there" should be selected through the focus restorel
// by deleting the selection
doh.robot.keyPress(dojo.keys.BACKSPACE, 500);
doh.robot.sequence(d.getTestCallback(function(){
// Check that focus was returned to the textarea
doh.t(dojo.global.dijit.focus.curNode, "curFocus defined");
doh.is("textarea", dojo.global.dijit.focus.curNode.id, "focused on textarea");
// And that " there" was selected then deleted
doh.is("hello!", dojo.byId("textarea").value);
}), 500);
return d;
}
},
{
name: "Test select text, clear, and restore",
timeout: 8000,
runTest: function(){
if(!dojo.isIE){ // IE only supports selecting form elements and the whole body from a plain non-Editor page, see the MSDN article on createTextRange
var d = new doh.Deferred();
//Select the text in the p tag.
var p = dojo.byId("selectableText");
dijit._editor.selection.selectElementChildren(p);
var value = dijit._editor.selection.getSelectedText();
value = dojo.trim(value);
try{
doh.assertEqual(
"This paragraph contains text to select for testing purposes.",
value, "Original Text Selection");
//Get the current focus, which saves the selections too.
var curFocus = dijit.getFocus();
//Clear current selection.
dijit._editor.selection.collapse(true);
//Check it's cleared.
value = dijit._editor.selection.getSelectedText();
doh.assertEqual("",value);
//Restore it and check again.
dijit.focus(curFocus);
value = dijit._editor.selection.getSelectedText();
doh.assertEqual(
"This paragraph contains text to select for testing purposes.",
value, "Restored Text Selection");
//Clear the selection, we're complete.
dijit._editor.selection.collapse(true);
d.callback(true);
}catch(e){
d.errback(e);
}
return d;
}
}
}
]);
doh.run();
});
</script>
</head>
</html>