@@ -751,6 +751,66 @@ test("catch after then catches rejected promise", () => {
751751 . expectToEqual ( [ "catch" , "test error" ] ) ;
752752} ) ;
753753
754+ test ( "promise unwraps resolved promise result" , ( ) => {
755+ util . testFunction `
756+ const { promise, resolve } = defer<string>();
757+ promise.then(v => log(v));
758+
759+ resolve(Promise.resolve("result"));
760+
761+ return allLogs;
762+ `
763+ . setTsHeader ( promiseTestLib )
764+ . expectToEqual ( [ "result" ] ) ;
765+ } ) ;
766+
767+ test ( "resolving promise with rejected promise rejects the promise" , ( ) => {
768+ util . testFunction `
769+ const { promise, resolve } = defer<string>();
770+ promise.catch(err => log(err));
771+
772+ resolve(Promise.reject("reject"));
773+
774+ return allLogs;
775+ `
776+ . setTsHeader ( promiseTestLib )
777+ . expectToEqual ( [ "reject" ] ) ;
778+ } ) ;
779+
780+ test ( "resolving promise with pending promise will keep pending until promise2 resolved" , ( ) => {
781+ util . testFunction `
782+ const { promise, resolve } = defer<string>();
783+ promise.then(v => log("promise 1", v));
784+
785+ const { promise: promise2, resolve: resolve2 } = defer<string>();
786+ promise2.then(v => log("promise 2", v));
787+
788+ resolve(promise2);
789+ resolve2("result");
790+
791+ return allLogs;
792+ `
793+ . setTsHeader ( promiseTestLib )
794+ . expectToEqual ( [ "promise 2" , "result" , "promise 1" , "result" ] ) ;
795+ } ) ;
796+
797+ test ( "resolving promise with pending promise will keep pending until promise2 rejects" , ( ) => {
798+ util . testFunction `
799+ const { promise, resolve } = defer<string>();
800+ promise.catch(v => log("promise 1", v));
801+
802+ const { promise: promise2, reject: reject2 } = defer<string>();
803+ promise2.catch(v => log("promise 2", v));
804+
805+ resolve(promise2);
806+ reject2("rejection");
807+
808+ return allLogs;
809+ `
810+ . setTsHeader ( promiseTestLib )
811+ . expectToEqual ( [ "promise 2" , "rejection" , "promise 1" , "rejection" ] ) ;
812+ } ) ;
813+
754814describe ( "Promise.all" , ( ) => {
755815 test ( "resolves once all arguments are resolved" , ( ) => {
756816 util . testFunction `
0 commit comments