Remove .live() tests now in Migrate plugin.

This commit is contained in:
Dave Methvin
2012-12-18 14:42:37 -05:00
parent eed78cc321
commit c928ed432a

View File

@@ -14,7 +14,7 @@ test("null or undefined handler", function() {
} catch (e) {}
});
test("bind(),live(),delegate() with non-null,defined data", function() {
test("bind(),on(),delegate() with non-null,defined data", function() {
expect(3);
@@ -22,15 +22,15 @@ test("bind(),live(),delegate() with non-null,defined data", function() {
equal( data, 0, "non-null, defined data (zero) is correctly passed" );
};
jQuery("#foo").bind("foo", handler);
jQuery("#foo").live("foo", handler);
jQuery("div").delegate("#foo", "foo", handler);
jQuery("#foo").bind("foo.bind", handler);
jQuery("#foo").on("foo.on", handler);
jQuery("div").delegate("#foo", "foo.delegate", handler);
jQuery("#foo").trigger("foo", 0);
jQuery("#foo").unbind("foo", handler);
jQuery("#foo").die("foo", handler);
jQuery("div").undelegate("#foo", "foo");
jQuery("#foo").unbind("foo.bind", handler);
jQuery("#foo").off("foo.on", handler);
jQuery("div").undelegate("#foo", "foo.delegate");
});
@@ -307,7 +307,7 @@ test("bind/one/unbind(Object)", function(){
equal( mouseoverCounter, 4, "bind(Object)" );
});
test("live/die(Object), delegate/undelegate(String, Object)", function() {
test("on/off(Object), delegate/undelegate(String, Object)", function() {
expect(6);
var clickCounter = 0, mouseoverCounter = 0,
@@ -326,12 +326,12 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
$a.trigger("click").trigger("mouseover");
}
$a.live( events );
jQuery( document ).on( events, "#firstp a:first" );
$p.delegate( "a", events, 2 );
trigger();
equal( clickCounter, 3, "live/delegate" );
equal( mouseoverCounter, 3, "live/delegate" );
equal( clickCounter, 3, "on/delegate" );
equal( mouseoverCounter, 3, "on/delegate" );
$p.undelegate( "a", events );
@@ -339,29 +339,29 @@ test("live/die(Object), delegate/undelegate(String, Object)", function() {
equal( clickCounter, 4, "undelegate" );
equal( mouseoverCounter, 4, "undelegate" );
$a.die( events );
jQuery( document ).off( events, "#firstp a:first" );
trigger();
equal( clickCounter, 4, "die" );
equal( mouseoverCounter, 4, "die" );
equal( clickCounter, 4, "off" );
equal( mouseoverCounter, 4, "off" );
});
test("live/delegate immediate propagation", function() {
test("on/delegate immediate propagation", function() {
expect(2);
var $p = jQuery("#firstp"), $a = $p.find("a:first"), lastClick;
lastClick = "";
$a.live( "click", function(e) {
jQuery( document ).on( "click", "#firstp a:first", function(e) {
lastClick = "click1";
e.stopImmediatePropagation();
});
$a.live( "click", function(e) {
jQuery( document ).on( "click", "#firstp a:first", function(e) {
lastClick = "click2";
});
$a.trigger( "click" );
equal( lastClick, "click1", "live stopImmediatePropagation" );
$a.die( "click" );
equal( lastClick, "click1", "on stopImmediatePropagation" );
jQuery( document ).off( "click", "#firstp a:first" );
lastClick = "";
$p.delegate( "a", "click", function(e) {
@@ -631,26 +631,6 @@ test("bind(name, false), unbind(name, false)", function() {
jQuery("#qunit-fixture").unbind("click");
});
test("live(name, false), die(name, false)", function() {
expect(3);
var main = 0;
jQuery("#qunit-fixture").live("click", function(e){ main++; });
jQuery("#ap").trigger("click");
equal( main, 1, "Verify that the trigger happened correctly." );
main = 0;
jQuery("#ap").live("click", false);
jQuery("#ap").trigger("click");
equal( main, 0, "Verify that no bubble happened." );
main = 0;
jQuery("#ap").die("click", false);
jQuery("#ap").trigger("click");
equal( main, 1, "Verify that the trigger happened correctly." );
jQuery("#qunit-fixture").die("click");
});
test("delegate(selector, name, false), undelegate(selector, name, false)", function() {
expect(3);
@@ -979,21 +959,19 @@ test("trigger(type, [data], [fn])", function() {
};
$elem.live("mouseenter", function(){
ok( true, "Trigger mouseenter bound by live" );
jQuery( document ).on("mouseenter", "#firstp", function(){
ok( true, "Trigger mouseenter bound by on" );
});
$elem.live("mouseleave", function(){
ok( true, "Trigger mouseleave bound by live" );
jQuery( document ).on("mouseleave", "#firstp", function(){
ok( true, "Trigger mouseleave bound by on" );
});
$elem.trigger("mouseenter");
$elem.trigger("mouseleave");
$elem.die("mouseenter");
$elem.die("mouseleave");
jQuery( document ).off( "mouseenter mouseleave", "#firstp");
// Triggers handlrs and native
// Trigger 5
@@ -1486,537 +1464,6 @@ test("jQuery.Event.currentTarget", function(){
.off( "click" );
});
test(".live()/.die()", function() {
expect(66);
var submit = 0, div = 0, livea = 0, liveb = 0;
jQuery("#qunit-fixture div").live("submit", function(){ submit++; return false; });
jQuery("#qunit-fixture div").live("click", function(){ div++; });
jQuery("div#nothiddendiv").live("click", function(){ livea++; });
jQuery("div#nothiddendivchild").live("click", function(){ liveb++; });
// Nothing should trigger on the body
jQuery("body").trigger("click");
equal( submit, 0, "Click on body" );
equal( div, 0, "Click on body" );
equal( livea, 0, "Click on body" );
equal( liveb, 0, "Click on body" );
// This should trigger two events
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendiv").trigger("click");
equal( submit, 0, "Click on div" );
equal( div, 1, "Click on div" );
equal( livea, 1, "Click on div" );
equal( liveb, 0, "Click on div" );
// This should trigger three events (w/ bubbling)
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendivchild").trigger("click");
equal( submit, 0, "Click on inner div" );
equal( div, 2, "Click on inner div" );
equal( livea, 1, "Click on inner div" );
equal( liveb, 1, "Click on inner div" );
// This should trigger one submit
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendivchild").trigger("submit");
equal( submit, 1, "Submit on div" );
equal( div, 0, "Submit on div" );
equal( livea, 0, "Submit on div" );
equal( liveb, 0, "Submit on div" );
// Make sure no other events were removed in the process
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendivchild").trigger("click");
equal( submit, 0, "die Click on inner div" );
equal( div, 2, "die Click on inner div" );
equal( livea, 1, "die Click on inner div" );
equal( liveb, 1, "die Click on inner div" );
// Now make sure that the removal works
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendivchild").die("click");
jQuery("div#nothiddendivchild").trigger("click");
equal( submit, 0, "die Click on inner div" );
equal( div, 2, "die Click on inner div" );
equal( livea, 1, "die Click on inner div" );
equal( liveb, 0, "die Click on inner div" );
// Make sure that the click wasn't removed too early
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendiv").trigger("click");
equal( submit, 0, "die Click on inner div" );
equal( div, 1, "die Click on inner div" );
equal( livea, 1, "die Click on inner div" );
equal( liveb, 0, "die Click on inner div" );
// Make sure that stopPropgation doesn't stop live events
submit = 0; div = 0; livea = 0; liveb = 0;
jQuery("div#nothiddendivchild").live("click", function(e){ liveb++; e.stopPropagation(); });
jQuery("div#nothiddendivchild").trigger("click");
equal( submit, 0, "stopPropagation Click on inner div" );
equal( div, 1, "stopPropagation Click on inner div" );
equal( livea, 0, "stopPropagation Click on inner div" );
equal( liveb, 1, "stopPropagation Click on inner div" );
// Make sure click events only fire with primary click
submit = 0; div = 0; livea = 0; liveb = 0;
var event = jQuery.Event("click");
event.button = 1;
jQuery("div#nothiddendiv").trigger(event);
equal( livea, 0, "live secondary click" );
jQuery("div#nothiddendivchild").die("click");
jQuery("div#nothiddendiv").die("click");
jQuery("#qunit-fixture div").die("click");
jQuery("#qunit-fixture div").die("submit");
// Test binding with a different context
var clicked = 0, container = jQuery("#qunit-fixture")[0];
jQuery("#foo", container).live("click", function(e){ clicked++; });
jQuery("#qunit-fixture div").trigger("click");
jQuery("#foo").trigger("click");
jQuery("#qunit-fixture").trigger("click");
jQuery("body").trigger("click");
equal( clicked, 2, "live with a context" );
// Test unbinding with a different context
jQuery("#foo", container).die("click");
jQuery("#foo").trigger("click");
equal( clicked, 2, "die with a context");
// Test binding with event data
jQuery("#foo").live("click", true, function(e){ equal( e.data, true, "live with event data" ); });
jQuery("#foo").trigger("click").die("click");
// Test binding with trigger data
jQuery("#foo").live("click", function(e, data){ equal( data, true, "live with trigger data" ); });
jQuery("#foo").trigger("click", true).die("click");
// Test binding with different this object
jQuery("#foo").live("click", jQuery.proxy(function(e){ equal( this.foo, "bar", "live with event scope" ); }, { foo: "bar" }));
jQuery("#foo").trigger("click").die("click");
// Test binding with different this object, event data, and trigger data
jQuery("#foo").live("click", true, jQuery.proxy(function(e, data){
equal( e.data, true, "live with with different this object, event data, and trigger data" );
equal( this["foo"], "bar", "live with with different this object, event data, and trigger data" );
equal( data, true, "live with with different this object, event data, and trigger data");
}, { "foo": "bar" }));
jQuery("#foo").trigger("click", true).die("click");
// Verify that return false prevents default action
jQuery("#anchor2").live("click", function(){ return false; });
var hash = window.location.hash;
jQuery("#anchor2").trigger("click");
equal( window.location.hash, hash, "return false worked" );
jQuery("#anchor2").die("click");
// Verify that .preventDefault() prevents default action
jQuery("#anchor2").live("click", function(e){ e.preventDefault(); });
hash = window.location.hash;
jQuery("#anchor2").trigger("click");
equal( window.location.hash, hash, "e.preventDefault() worked" );
jQuery("#anchor2").die("click");
// Test binding the same handler to multiple points
var called = 0;
function callback(){ called++; return false; }
jQuery("#nothiddendiv").live("click", callback);
jQuery("#anchor2").live("click", callback);
jQuery("#nothiddendiv").trigger("click");
equal( called, 1, "Verify that only one click occurred." );
called = 0;
jQuery("#anchor2").trigger("click");
equal( called, 1, "Verify that only one click occurred." );
// Make sure that only one callback is removed
jQuery("#anchor2").die("click", callback);
called = 0;
jQuery("#nothiddendiv").trigger("click");
equal( called, 1, "Verify that only one click occurred." );
called = 0;
jQuery("#anchor2").trigger("click");
equal( called, 0, "Verify that no click occurred." );
// Make sure that it still works if the selector is the same,
// but the event type is different
jQuery("#nothiddendiv").live("foo", callback);
// Cleanup
jQuery("#nothiddendiv").die("click", callback);
called = 0;
jQuery("#nothiddendiv").trigger("click");
equal( called, 0, "Verify that no click occurred." );
called = 0;
jQuery("#nothiddendiv").trigger("foo");
equal( called, 1, "Verify that one foo occurred." );
// Cleanup
jQuery("#nothiddendiv").die("foo", callback);
// Make sure we don't loose the target by DOM modifications
// after the bubble already reached the liveHandler
var livec = 0, elemDiv = jQuery("#nothiddendivchild").html("<span></span>").get(0);
jQuery("#nothiddendivchild").live("click", function(e){ jQuery("#nothiddendivchild").html(""); });
jQuery("#nothiddendivchild").live("click", function(e){ if(e.target) {livec++;} });
jQuery("#nothiddendiv span").click();
equal( jQuery("#nothiddendiv span").length, 0, "Verify that first handler occurred and modified the DOM." );
equal( livec, 1, "Verify that second handler occurred even with nuked target." );
// Cleanup
jQuery("#nothiddendivchild").die("click");
// Verify that .live() ocurs and cancel buble in the same order as
// we would expect .bind() and .click() without delegation
var lived = 0, livee = 0;
// bind one pair in one order
jQuery("span#liveSpan1 a").live("click", function(){ lived++; return false; });
jQuery("span#liveSpan1").live("click", function(){ livee++; });
jQuery("span#liveSpan1 a").click();
equal( lived, 1, "Verify that only one first handler occurred." );
equal( livee, 0, "Verify that second handler doesn't." );
// and one pair in inverse
jQuery("span#liveSpan2").live("click", function(){ livee++; });
jQuery("span#liveSpan2 a").live("click", function(){ lived++; return false; });
lived = 0;
livee = 0;
jQuery("span#liveSpan2 a").click();
equal( lived, 1, "Verify that only one first handler occurred." );
equal( livee, 0, "Verify that second handler doesn't." );
// Cleanup
jQuery("span#liveSpan1 a").die("click");
jQuery("span#liveSpan1").die("click");
jQuery("span#liveSpan2 a").die("click");
jQuery("span#liveSpan2").die("click");
// Test this, target and currentTarget are correct
jQuery("span#liveSpan1").live("click", function(e){
equal( this.id, "liveSpan1", "Check the this within a live handler" );
equal( e.currentTarget.id, "liveSpan1", "Check the event.currentTarget within a live handler" );
equal( e.delegateTarget, document, "Check the event.delegateTarget within a live handler" );
equal( e.target.nodeName.toUpperCase(), "A", "Check the event.target within a live handler" );
});
jQuery("span#liveSpan1 a").click();
jQuery("span#liveSpan1").die("click");
// Work with deep selectors
livee = 0;
function clickB(){ livee++; }
jQuery("#nothiddendiv div").live("click", function(){ livee++; });
jQuery("#nothiddendiv div").live("click", clickB);
jQuery("#nothiddendiv div").live("mouseover", function(){ livee++; });
equal( livee, 0, "No clicks, deep selector." );
livee = 0;
jQuery("#nothiddendivchild").trigger("click");
equal( livee, 2, "Click, deep selector." );
livee = 0;
jQuery("#nothiddendivchild").trigger("mouseover");
equal( livee, 1, "Mouseover, deep selector." );
jQuery("#nothiddendiv div").die("mouseover");
livee = 0;
jQuery("#nothiddendivchild").trigger("click");
equal( livee, 2, "Click, deep selector." );
livee = 0;
jQuery("#nothiddendivchild").trigger("mouseover");
equal( livee, 0, "Mouseover, deep selector." );
jQuery("#nothiddendiv div").die("click", clickB);
livee = 0;
jQuery("#nothiddendivchild").trigger("click");
equal( livee, 1, "Click, deep selector." );
jQuery("#nothiddendiv div").die("click");
// blur a non-input element, we should force-fire its handlers
// regardless of whether it's burring or not (unlike browsers)
jQuery("#nothiddendiv div")
.live("blur", function(){
ok( true, "Live div trigger blur." );
})
.trigger("blur")
.die("blur");
});
test("die all bound events", function(){
expect(1);
var count = 0;
var div = jQuery("div#nothiddendivchild");
div.live("click submit", function(){ count++; });
div.die();
div.trigger("click");
div.trigger("submit");
equal( count, 0, "Make sure no events were triggered." );
});
test("live with multiple events", function(){
expect(1);
var count = 0;
var div = jQuery("div#nothiddendivchild");
div.live("click submit", function(){ count++; });
div.trigger("click");
div.trigger("submit");
equal( count, 2, "Make sure both the click and submit were triggered." );
// manually clean up events from elements outside the fixture
div.die();
});
test("live with namespaces", function(){
expect(15);
var count1 = 0, count2 = 0;
jQuery("#liveSpan1").live("foo.bar", function(e){
equal( e.namespace, "bar", "namespace is bar" );
count1++;
});
jQuery("#liveSpan1").live("foo.zed", function(e){
equal( e.namespace, "zed", "namespace is zed" );
count2++;
});
jQuery("#liveSpan1").trigger("foo.bar");
equal( count1, 1, "Got live foo.bar" );
equal( count2, 0, "Got live foo.bar" );
count1 = 0; count2 = 0;
jQuery("#liveSpan1").trigger("foo.zed");
equal( count1, 0, "Got live foo.zed" );
equal( count2, 1, "Got live foo.zed" );
//remove one
count1 = 0; count2 = 0;
jQuery("#liveSpan1").die("foo.zed");
jQuery("#liveSpan1").trigger("foo.bar");
equal( count1, 1, "Got live foo.bar after dieing foo.zed" );
equal( count2, 0, "Got live foo.bar after dieing foo.zed" );
count1 = 0; count2 = 0;
jQuery("#liveSpan1").trigger("foo.zed");
equal( count1, 0, "Got live foo.zed" );
equal( count2, 0, "Got live foo.zed" );
//remove the other
jQuery("#liveSpan1").die("foo.bar");
count1 = 0; count2 = 0;
jQuery("#liveSpan1").trigger("foo.bar");
equal( count1, 0, "Did not respond to foo.bar after dieing it" );
equal( count2, 0, "Did not respond to foo.bar after dieing it" );
jQuery("#liveSpan1").trigger("foo.zed");
equal( count1, 0, "Did not trigger foo.zed again" );
equal( count2, 0, "Did not trigger foo.zed again" );
});
test("live with change", function(){
expect(8);
var selectChange = 0, checkboxChange = 0;
var select = jQuery("select[name='S1']");
select.live("change", function() {
selectChange++;
});
var checkbox = jQuery("#check2"),
checkboxFunction = function(){
checkboxChange++;
};
checkbox.live("change", checkboxFunction);
// test click on select
// second click that changed it
selectChange = 0;
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
select.trigger("change");
equal( selectChange, 1, "Change on click." );
// test keys on select
selectChange = 0;
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
select.trigger("change");
equal( selectChange, 1, "Change on keyup." );
// test click on checkbox
checkbox.trigger("change");
equal( checkboxChange, 1, "Change on checkbox." );
// test blur/focus on text
var text = jQuery("#name"), textChange = 0, oldTextVal = text.val();
text.live("change", function() {
textChange++;
});
text.val(oldTextVal+"foo");
text.trigger("change");
equal( textChange, 1, "Change on text input." );
text.val(oldTextVal);
text.die("change");
// test blur/focus on password
var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();
password.live("change", function() {
passwordChange++;
});
password.val(oldPasswordVal + "foo");
password.trigger("change");
equal( passwordChange, 1, "Change on password input." );
password.val(oldPasswordVal);
password.die("change");
// make sure die works
// die all changes
selectChange = 0;
select.die("change");
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
select.trigger("change");
equal( selectChange, 0, "Die on click works." );
selectChange = 0;
select[0].selectedIndex = select[0].selectedIndex ? 0 : 1;
select.trigger("change");
equal( selectChange, 0, "Die on keyup works." );
// die specific checkbox
checkbox.die("change", checkboxFunction);
checkbox.trigger("change");
equal( checkboxChange, 1, "Die on checkbox." );
});
test("live with submit", function() {
expect(7);
var count1 = 0, count2 = 0;
jQuery("#testForm").live("submit", function(ev) {
count1++;
ev.preventDefault();
});
jQuery("body").live("submit", function(ev) {
count2++;
ev.preventDefault();
});
jQuery("#testForm input[name=sub1]").submit();
equal( count1, 1, "Verify form submit." );
equal( count2, 1, "Verify body submit." );
jQuery("#testForm input[name=sub1]").live("click", function(ev) {
ok( true, "cancelling submit still calls click handler" );
});
jQuery("#testForm input[name=sub1]")[0].click();
equal( count1, 2, "Verify form submit." );
equal( count2, 2, "Verify body submit." );
jQuery("#testForm button[name=sub4]")[0].click();
equal( count1, 3, "Verify form submit." );
equal( count2, 3, "Verify body submit." );
jQuery("#testForm").die("submit");
jQuery("#testForm input[name=sub1]").die("click");
jQuery("body").die("submit");
});
test("live with special events", function() {
expect(13);
jQuery.event.special["foo"] = {
setup: function( data, namespaces, handler ) {
ok( true, "Setup run." );
},
teardown: function( namespaces ) {
ok( true, "Teardown run." );
},
add: function( handleObj ) {
ok( true, "Add run." );
},
remove: function( handleObj ) {
ok( true, "Remove run." );
},
_default: function( event, arg ) {
ok( event.type === "foo" && arg == 42, "Default run with correct args." );
}
};
// Run: setup, add
jQuery("#liveSpan1").live("foo.a", function(e){
ok( true, "Handler 1 run." );
});
// Run: add
jQuery("#liveSpan1").live("foo.b", function(e){
ok( true, "Handler 2 run." );
});
// Run: Handler 1, Handler 2, Default
jQuery("#liveSpan1").trigger("foo", 42);
// Run: Handler 1, Default
jQuery("#liveSpan1").trigger("foo.a", 42);
// Run: remove
jQuery("#liveSpan1").die("foo.a");
// Run: Handler 2, Default
jQuery("#liveSpan1").trigger("foo", 42);
// Run: remove, teardown
jQuery("#liveSpan1").die("foo");
delete jQuery.event.special["foo"];
});
test(".delegate()/.undelegate()", function() {
expect(65);
@@ -2436,7 +1883,7 @@ test("delegate with change", function(){
equal( textChange, 1, "Change on text input." );
text.val(oldTextVal);
jQuery("#body").die("change");
jQuery("#body").undelegate("#name", "change");
// test blur/focus on password
var password = jQuery("#name"), passwordChange = 0, oldPasswordVal = password.val();