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 ()