equal
deleted
inserted
replaced
4 --luacheck: ignore 212/resolve 212/reject |
4 --luacheck: ignore 212/resolve 212/reject |
5 describe("new()", function () |
5 describe("new()", function () |
6 it("returns a promise object", function () |
6 it("returns a promise object", function () |
7 assert(promise.new()); |
7 assert(promise.new()); |
8 end); |
8 end); |
|
9 end); |
|
10 it("supplies a sensible tostring()", function () |
|
11 local s = tostring(promise.new()); |
|
12 assert.truthy(s:find("promise", 1, true)); |
|
13 assert.truthy(s:find("pending", 1, true)); |
9 end); |
14 end); |
10 it("notifies immediately for fulfilled promises", function () |
15 it("notifies immediately for fulfilled promises", function () |
11 local p = promise.new(function (resolve) |
16 local p = promise.new(function (resolve) |
12 resolve("foo"); |
17 resolve("foo"); |
13 end); |
18 end); |
454 assert.spy(cb).was_called(0); |
459 assert.spy(cb).was_called(0); |
455 r1("this succeeds"); |
460 r1("this succeeds"); |
456 assert.spy(cb).was_called(1); |
461 assert.spy(cb).was_called(1); |
457 assert.same({ |
462 assert.same({ |
458 { status = "fulfilled", value = "this succeeds" }; |
463 { status = "fulfilled", value = "this succeeds" }; |
|
464 { status = "rejected", reason = "this fails" }; |
|
465 }, result); |
|
466 end); |
|
467 it("works when all promises reject", function () |
|
468 local r1, r2; |
|
469 local p1, p2 = promise.new(function (_, reject) r1 = reject end), promise.new(function (_, reject) r2 = reject end); |
|
470 local p = promise.all_settled({ p1, p2 }); |
|
471 |
|
472 local result; |
|
473 local cb = spy.new(function (v) |
|
474 result = v; |
|
475 end); |
|
476 p:next(cb); |
|
477 assert.spy(cb).was_called(0); |
|
478 r2("this fails"); |
|
479 assert.spy(cb).was_called(0); |
|
480 r1("this fails too"); |
|
481 assert.spy(cb).was_called(1); |
|
482 assert.same({ |
|
483 { status = "rejected", value = "this fails too" }; |
459 { status = "rejected", reason = "this fails" }; |
484 { status = "rejected", reason = "this fails" }; |
460 }, result); |
485 }, result); |
461 end); |
486 end); |
462 it("works with non-numeric keys", function () |
487 it("works with non-numeric keys", function () |
463 local r1, r2; |
488 local r1, r2; |