jquery-ui/tests/unit/datepicker/events.js
2015-08-20 09:48:11 -04:00

139 lines
3.1 KiB
JavaScript

define( [
"jquery",
"./helper",
"ui/widgets/datepicker"
], function( $, testHelper ) {
module( "datepicker: events" );
test( "beforeOpen", function() {
expect( 3 );
var input = testHelper.init( "#datepicker", {
beforeOpen: function() {
ok( true, "beforeOpen event fired before open" );
ok( input.datepicker( "widget" ).is( ":hidden" ), "calendar hidden on beforeOpen" );
},
open: function() {
ok( input.datepicker( "widget" ).is( ":visible" ), "calendar open on open" );
}
});
input
.datepicker( "open" )
.datepicker( "close" )
.datepicker( "option", {
beforeOpen: function() {
return false;
},
open: function() {
ok( false, "calendar should not open when openBefore is canceled" );
}
})
.datepicker( "open" );
});
test( "close", function() {
expect( 4 );
var shouldFire,
input = testHelper.init( "#datepicker", {
close: function() {
ok( shouldFire, "close event fired" );
}
});
shouldFire = false;
input.datepicker( "open" );
shouldFire = true;
input.datepicker( "close" );
shouldFire = false;
input.datepicker( "open" );
shouldFire = true;
$( "body" ).trigger( "mousedown" );
shouldFire = false;
input.datepicker( "open" );
shouldFire = true;
input.simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
shouldFire = false;
input.datepicker( "open" );
shouldFire = true;
input.datepicker( "widget" ).find( "tbody tr:first button:first" ).simulate( "mousedown" );
});
test( "open", function() {
expect( 2 );
var input = testHelper.init( "#datepicker", {
open: function() {
ok( true, "open event fired on open" );
ok( widget.is( ":visible" ), "calendar open on open" );
}
}),
widget = input.datepicker( "widget" );
input.datepicker( "open" );
});
asyncTest( "select", function() {
expect( 4 );
var input = testHelper.init( "#datepicker", {
select: function( event ) {
ok( true, "select event fired " + message );
equal(
event.originalEvent.type,
"calendarselect",
"select originalEvent " + message
);
}
}),
widget = input.datepicker( "widget" ),
message = "";
function step1() {
message = "on calendar cell click";
input
.simulate( "focus" )
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
setTimeout(function() {
widget.find( "tbody tr:first button:first" ).simulate( "mousedown" );
input.datepicker( "close" );
step2();
}, 100 );
}
function step2() {
message = "on calendar cell enter";
input
.simulate( "focus" )
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
setTimeout(function() {
$( document.activeElement )
.simulate( "keydown", { keyCode: $.ui.keyCode.RIGHT } )
.simulate( "keydown", { keyCode: $.ui.keyCode.ENTER } );
input.datepicker( "close" );
step3();
}, 100 );
}
function step3() {
message = "on calendar escape (not expected)";
input
.simulate( "focus" )
.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
setTimeout(function() {
$( document.activeElement ).simulate( "keydown", { keyCode: $.ui.keyCode.ESCAPE } );
input.datepicker( "close" );
start();
}, 100 );
}
step1();
});
} );