Software /
code /
prosody
Comparison
spec/util_promise_spec.lua @ 11200:bf8f2da84007
Merge 0.11->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 05 Nov 2020 22:31:25 +0100 |
parent | 10922:7d3dbb9eb3eb |
child | 11483:24ce9d380475 |
comparison
equal
deleted
inserted
replaced
11199:6c7c50a4de32 | 11200:bf8f2da84007 |
---|---|
246 assert.spy(cb2).was_called(1); | 246 assert.spy(cb2).was_called(1); |
247 assert.spy(cb2).was_called_with("hello"); | 247 assert.spy(cb2).was_called_with("hello"); |
248 assert.spy(cb3).was_called(1); | 248 assert.spy(cb3).was_called(1); |
249 assert.spy(cb3).was_called_with("goodbye"); | 249 assert.spy(cb3).was_called_with("goodbye"); |
250 end); | 250 end); |
251 | |
252 it("ordinary values", function () | |
253 local p = promise.resolve() | |
254 local cb = spy.new(function () | |
255 return "hello" | |
256 end); | |
257 local cb2 = spy.new(function () end); | |
258 p:next(cb):next(cb2); | |
259 assert.spy(cb).was_called(1); | |
260 assert.spy(cb2).was_called(1); | |
261 assert.spy(cb2).was_called_with("hello"); | |
262 end); | |
263 | |
264 it("nil", function () | |
265 local p = promise.resolve() | |
266 local cb = spy.new(function () | |
267 return | |
268 end); | |
269 local cb2 = spy.new(function () end); | |
270 p:next(cb):next(cb2); | |
271 assert.spy(cb).was_called(1); | |
272 assert.spy(cb2).was_called(1); | |
273 assert.spy(cb2).was_called_with(nil); | |
274 end); | |
251 end); | 275 end); |
252 | 276 |
253 describe("race()", function () | 277 describe("race()", function () |
254 it("works with fulfilled promises", function () | 278 it("works with fulfilled promises", function () |
255 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); | 279 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); |
325 assert.spy(cb_err).was_called(1); | 349 assert.spy(cb_err).was_called(1); |
326 r1("nope"); | 350 r1("nope"); |
327 assert.spy(cb).was_called(0); | 351 assert.spy(cb).was_called(0); |
328 assert.spy(cb_err).was_called(1); | 352 assert.spy(cb_err).was_called(1); |
329 assert.equal("fail", result); | 353 assert.equal("fail", result); |
354 end); | |
355 end); | |
356 describe("all_settled()", function () | |
357 it("works with fulfilled promises", function () | |
358 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); | |
359 local p = promise.all_settled({ p1, p2 }); | |
360 local result; | |
361 p:next(function (v) | |
362 result = v; | |
363 end); | |
364 assert.same({ | |
365 { status = "fulfilled", value = "yep" }; | |
366 { status = "fulfilled", value = "nope" }; | |
367 }, result); | |
368 end); | |
369 it("works with pending promises", function () | |
370 local r1, r2; | |
371 local p1, p2 = promise.new(function (resolve) r1 = resolve end), promise.new(function (resolve) r2 = resolve end); | |
372 local p = promise.all_settled({ p1, p2 }); | |
373 | |
374 local result; | |
375 local cb = spy.new(function (v) | |
376 result = v; | |
377 end); | |
378 p:next(cb); | |
379 assert.spy(cb).was_called(0); | |
380 r2("yep"); | |
381 assert.spy(cb).was_called(0); | |
382 r1("nope"); | |
383 assert.spy(cb).was_called(1); | |
384 assert.same({ | |
385 { status = "fulfilled", value = "nope" }; | |
386 { status = "fulfilled", value = "yep" }; | |
387 }, result); | |
388 end); | |
389 it("works when some promises reject", function () | |
390 local r1, r2; | |
391 local p1, p2 = promise.new(function (resolve) r1 = resolve end), promise.new(function (_, reject) r2 = reject end); | |
392 local p = promise.all_settled({ p1, p2 }); | |
393 | |
394 local result; | |
395 local cb = spy.new(function (v) | |
396 result = v; | |
397 end); | |
398 p:next(cb); | |
399 assert.spy(cb).was_called(0); | |
400 r2("this fails"); | |
401 assert.spy(cb).was_called(0); | |
402 r1("this succeeds"); | |
403 assert.spy(cb).was_called(1); | |
404 assert.same({ | |
405 { status = "fulfilled", value = "this succeeds" }; | |
406 { status = "rejected", reason = "this fails" }; | |
407 }, result); | |
330 end); | 408 end); |
331 end); | 409 end); |
332 describe("catch()", function () | 410 describe("catch()", function () |
333 it("works", function () | 411 it("works", function () |
334 local result; | 412 local result; |