Skip to content

Commit bbc4fee

Browse files
committed
add tests for Promise.finally value preservation and rejection passthrough
Fix issue reference (#1660, not #1659).
1 parent bbb3ab3 commit bbc4fee

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

test/unit/builtins/promise.spec.ts

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1324,11 +1324,50 @@ describe("Promise.race", () => {
13241324
});
13251325
});
13261326

1327-
// https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1659
1328-
test("finally returns a different promise instance", () => {
1329-
util.testFunction`
1330-
const p1 = new Promise(() => {});
1331-
const p2 = p1.finally();
1332-
return p1 === p2;
1333-
`.expectToMatchJsResult();
1327+
// https://github.com/TypeScriptToLua/TypeScriptToLua/issues/1660
1328+
describe("Promise.finally", () => {
1329+
test("returns a different promise instance", () => {
1330+
util.testFunction`
1331+
const p1 = new Promise(() => {});
1332+
const p2 = p1.finally();
1333+
return p1 === p2;
1334+
`.expectToMatchJsResult();
1335+
});
1336+
1337+
test("preserves fulfillment value", () => {
1338+
util.testFunction`
1339+
const result = Promise.resolve(42).finally(() => {}) as any;
1340+
return result.value;
1341+
`.expectToEqual(42);
1342+
});
1343+
1344+
test("preserves rejection reason", () => {
1345+
util.testFunction`
1346+
const result = Promise.reject("err").finally(() => {}) as any;
1347+
return result.rejectionReason;
1348+
`.expectToEqual("err");
1349+
});
1350+
1351+
test("callback executes on fulfillment", () => {
1352+
util.testFunction`
1353+
let called = false;
1354+
Promise.resolve(1).finally(() => { called = true; });
1355+
return called;
1356+
`.expectToEqual(true);
1357+
});
1358+
1359+
test("callback executes on rejection", () => {
1360+
util.testFunction`
1361+
let called = false;
1362+
Promise.reject("err").finally(() => { called = true; });
1363+
return called;
1364+
`.expectToEqual(true);
1365+
});
1366+
1367+
test("finally with undefined callback", () => {
1368+
util.testFunction`
1369+
const result = Promise.resolve(99).finally(undefined) as any;
1370+
return result.value;
1371+
`.expectToEqual(99);
1372+
});
13341373
});

0 commit comments

Comments
 (0)