Software /
code /
prosody
Comparison
spec/util_promise_spec.lua @ 11485:7d42ed3a8a40
util.promise: all()/all_settled() pass through non-promise values
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 25 Mar 2021 14:32:32 +0000 |
parent | 11484:a0120e935442 |
child | 11486:78d843faaffc |
comparison
equal
deleted
inserted
replaced
11484:a0120e935442 | 11485:7d42ed3a8a40 |
---|---|
367 assert.spy(cb).was_called(0); | 367 assert.spy(cb).was_called(0); |
368 r1("nope"); | 368 r1("nope"); |
369 assert.spy(cb).was_called(1); | 369 assert.spy(cb).was_called(1); |
370 assert.same({ [true] = "nope", [false] = "yep" }, result); | 370 assert.same({ [true] = "nope", [false] = "yep" }, result); |
371 end); | 371 end); |
372 it("passes through non-promise values", function () | |
373 local r1; | |
374 local p1 = promise.new(function (resolve) r1 = resolve end); | |
375 local p = promise.all({ [true] = p1, [false] = "yep" }); | |
376 | |
377 local result; | |
378 local cb = spy.new(function (v) | |
379 result = v; | |
380 end); | |
381 p:next(cb); | |
382 assert.spy(cb).was_called(0); | |
383 r1("nope"); | |
384 assert.spy(cb).was_called(1); | |
385 assert.same({ [true] = "nope", [false] = "yep" }, result); | |
386 end); | |
372 end); | 387 end); |
373 describe("all_settled()", function () | 388 describe("all_settled()", function () |
374 it("works with fulfilled promises", function () | 389 it("works with fulfilled promises", function () |
375 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); | 390 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); |
376 local p = promise.all_settled({ p1, p2 }); | 391 local p = promise.all_settled({ p1, p2 }); |
439 r1("nope"); | 454 r1("nope"); |
440 assert.spy(cb).was_called(1); | 455 assert.spy(cb).was_called(1); |
441 assert.same({ | 456 assert.same({ |
442 foo = { status = "fulfilled", value = "nope" }; | 457 foo = { status = "fulfilled", value = "nope" }; |
443 bar = { status = "fulfilled", value = "yep" }; | 458 bar = { status = "fulfilled", value = "yep" }; |
459 }, result); | |
460 end); | |
461 it("passes through non-promise values", function () | |
462 local r1; | |
463 local p1 = promise.new(function (resolve) r1 = resolve end); | |
464 local p = promise.all_settled({ foo = p1, bar = "yep" }); | |
465 | |
466 local result; | |
467 local cb = spy.new(function (v) | |
468 result = v; | |
469 end); | |
470 p:next(cb); | |
471 assert.spy(cb).was_called(0); | |
472 r1("nope"); | |
473 assert.spy(cb).was_called(1); | |
474 assert.same({ | |
475 foo = { status = "fulfilled", value = "nope" }; | |
476 bar = "yep"; | |
444 }, result); | 477 }, result); |
445 end); | 478 end); |
446 end); | 479 end); |
447 describe("catch()", function () | 480 describe("catch()", function () |
448 it("works", function () | 481 it("works", function () |