spec/util_promise_spec.lua
changeset 12755 2639e0e1c378
parent 12753 eb9814372c54
child 12756 9ef8f248635c
equal deleted inserted replaced
12754:c882d2460bb1 12755:2639e0e1c378
     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;