Commit 139135a9 authored by jaubourg's avatar jaubourg

Fixes #9446. Context is properly propagated using pipe. If context was the...

Fixes #9446. Context is properly propagated using pipe. If context was the original deferred, then context is updated to next deferred in the chain. Unit tests added.
parent 5b92a5f5
...@@ -122,7 +122,7 @@ jQuery.extend({ ...@@ -122,7 +122,7 @@ jQuery.extend({
if ( returned && jQuery.isFunction( returned.promise ) ) { if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise().then( newDefer.resolve, newDefer.reject ); returned.promise().then( newDefer.resolve, newDefer.reject );
} else { } else {
newDefer[ action ]( returned ); newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
} }
}); });
} else { } else {
......
...@@ -275,6 +275,33 @@ test( "jQuery.Deferred.pipe - deferred (fail)", function() { ...@@ -275,6 +275,33 @@ test( "jQuery.Deferred.pipe - deferred (fail)", function() {
strictEqual( value3, 6, "result of filter ok" ); strictEqual( value3, 6, "result of filter ok" );
}); });
test( "jQuery.Deferred.pipe - context", function() {
expect(4);
var context = {};
jQuery.Deferred().resolveWith( context, [ 2 ] ).pipe(function( value ) {
return value * 3;
}).done(function( value ) {
strictEqual( this, context, "custom context correctly propagated" );
strictEqual( value, 6, "proper value received" );
});
var defer = jQuery.Deferred(),
piped = defer.pipe(function( value ) {
return value * 3;
});
defer.resolve( 2 );
piped.done(function( value ) {
strictEqual( this.promise(), piped, "default context gets updated to latest defer in the chain" );
strictEqual( value, 6, "proper value received" );
});
});
test( "jQuery.when" , function() { test( "jQuery.when" , function() {
expect( 23 ); expect( 23 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment