testrunner: refactored unbind's tests. Including one for #3538, passing since last commit.

This commit is contained in:
Ariel Flesler 2009-01-08 22:22:33 +00:00
parent 6898cd6d2a
commit eced38a30d

View File

@ -166,6 +166,72 @@ test("bind(), multi-namespaced events", function() {
jQuery("#firstp").trigger("custom");
});
test("unbind(type)", function() {
expect( 0 );
var $elem = jQuery("#firstp"),
message;
function error(){
ok( false, message );
}
message = "unbind passing function";
$elem.bind('error', error).unbind('error',error).triggerHandler('error');
message = "unbind all from event";
$elem.bind('error', error).unbind('error').triggerHandler('error');
message = "unbind all";
$elem.bind('error', error).unbind().triggerHandler('error');
message = "unbind many with function";
$elem.bind('error error2',error)
.unbind('error error2', error )
.trigger('error').triggerHandler('error2');
message = "unbind many"; // #3538
$elem.bind('error error2',error)
.unbind('error error2')
.trigger('error').triggerHandler('error2');
});
test("unbind(eventObject)", function() {
expect(4);
var $elem = jQuery("#firstp"),
num;
function assert( expected ){
num = 0;
$elem.trigger('foo').triggerHandler('bar');
equals( num, expected, "Check the right handlers are triggered" );
}
$elem
// This handler shouldn't be unbound
.bind('foo', function(){
num += 1;
})
.bind('foo', function(e){
$elem.unbind( e )
num += 2;
})
// Neither this one
.bind('bar', function(){
num += 4;
});
assert( 7 );
assert( 5 );
$elem.unbind('bar');
assert( 1 );
$elem.unbind();
assert( 0 );
});
test("trigger() shortcuts", function() {
expect(6);
jQuery('<li><a href="#">Change location</a></li>').prependTo('#firstUL').find('a').bind('click', function() {
@ -232,43 +298,6 @@ test("trigger() bubbling", function() {
equals( ap, 1, "ap bubble" );
});
test("unbind(event)", function() {
expect(8);
var el = jQuery("#firstp");
el.click(function() {
ok( true, "Fake normal bind" );
});
el.click(function(event) {
el.unbind(event);
ok( true, "Fake onebind" );
});
el.click().click();
el.click(function() { return; });
el.unbind('click');
ok( !el[0].onclick, "Handler is removed" ); // Bug #964
el.click(function() { return; });
el.unbind('change',function(){ return; });
for (var ret in jQuery.data(el[0], "events")['click']) break;
ok( ret, "Extra handlers weren't accidentally removed." );
el.unbind('click');
ok( !jQuery.data(el[0], "events"), "Removed the events expando after all handlers are unbound." );
reset();
var clickCounter = (mouseoverCounter = 0);
var handler = function(event) {
if (event.type == "click")
clickCounter += 1;
else if (event.type == "mouseover")
mouseoverCounter += 1;
};
jQuery("#firstp").bind("click mouseover", handler).unbind("click mouseover", handler).trigger("click").trigger("mouseover");
equals( clickCounter, 0, "unbind() with multiple events at once" );
equals( mouseoverCounter, 0, "unbind() with multiple events at once" );
});
test("trigger(type, [data], [fn])", function() {
expect(11);