diff options
author | Matthew Wild <mwild1@gmail.com> | 2022-10-07 17:56:38 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2022-10-07 17:56:38 +0100 |
commit | e8080773d63fab1c3390927648c1d3cac84402d5 (patch) | |
tree | 91efcb5d21d1653a53dd6b0b8a3ffea29f511949 /spec | |
parent | a79238fb37eb9ad993e906fb834e2f7696d70b11 (diff) | |
download | prosody-e8080773d63fab1c3390927648c1d3cac84402d5.tar.gz prosody-e8080773d63fab1c3390927648c1d3cac84402d5.zip |
util.promise: Add some missing test cases (found through mutation testing)
Diffstat (limited to 'spec')
-rw-r--r-- | spec/util_promise_spec.lua | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/util_promise_spec.lua b/spec/util_promise_spec.lua index 75e9294e..7f1ece52 100644 --- a/spec/util_promise_spec.lua +++ b/spec/util_promise_spec.lua @@ -7,6 +7,11 @@ describe("util.promise", function () assert(promise.new()); end); end); + it("supplies a sensible tostring()", function () + local s = tostring(promise.new()); + assert.truthy(s:find("promise", 1, true)); + assert.truthy(s:find("pending", 1, true)); + end); it("notifies immediately for fulfilled promises", function () local p = promise.new(function (resolve) resolve("foo"); @@ -459,6 +464,26 @@ describe("util.promise", function () { status = "rejected", reason = "this fails" }; }, result); end); + it("works when all promises reject", function () + local r1, r2; + local p1, p2 = promise.new(function (_, reject) r1 = reject end), promise.new(function (_, reject) r2 = reject end); + local p = promise.all_settled({ p1, p2 }); + + local result; + local cb = spy.new(function (v) + result = v; + end); + p:next(cb); + assert.spy(cb).was_called(0); + r2("this fails"); + assert.spy(cb).was_called(0); + r1("this fails too"); + assert.spy(cb).was_called(1); + assert.same({ + { status = "rejected", value = "this fails too" }; + { status = "rejected", reason = "this fails" }; + }, result); + end); it("works with non-numeric keys", function () local r1, r2; local p1, p2 = promise.new(function (resolve) r1 = resolve end), promise.new(function (resolve) r2 = resolve end); |