Permalink
Browse files

Fixes #9446. Context is properly propagated using pipe. If context wa…

…s the original deferred, then context is updated to next deferred in the chain. Unit tests added.
  • Loading branch information...
1 parent 5b92a5f commit 139135a98aab1c422e5ae05b026535a40d58328f @jaubourg jaubourg committed Jun 30, 2011
Showing with 28 additions and 1 deletion.
  1. +1 −1 src/deferred.js
  2. +27 −0 test/unit/deferred.js
View
@@ -122,7 +122,7 @@ jQuery.extend({
if ( returned && jQuery.isFunction( returned.promise ) ) {
returned.promise().then( newDefer.resolve, newDefer.reject );
} else {
- newDefer[ action ]( returned );
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
}
});
} else {
View
@@ -275,6 +275,33 @@ test( "jQuery.Deferred.pipe - deferred (fail)", function() {
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() {
expect( 23 );

0 comments on commit 139135a

Please sign in to comment.