Software / code / prosody
Comparison
spec/util_promise_spec.lua @ 9557:d7fdd418adf8
util.promise: Add tests ensuring returning a promise resolves the current promise with that promise
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 26 Oct 2018 09:23:00 +0100 |
| parent | 9551:7421379ba464 |
| child | 10297:da9f21a70e52 |
comparison
equal
deleted
inserted
replaced
| 9556:e4c09e335bd9 | 9557:d7fdd418adf8 |
|---|---|
| 197 local cb2_err = spy.new(function () end); | 197 local cb2_err = spy.new(function () end); |
| 198 p2:next(cb2, cb2_err); | 198 p2:next(cb2, cb2_err); |
| 199 assert.spy(cb2).was_called(0); | 199 assert.spy(cb2).was_called(0); |
| 200 assert.spy(cb2_err).was_called(1); | 200 assert.spy(cb2_err).was_called(1); |
| 201 assert.spy(cb2_err).was_called_with("foo"); | 201 assert.spy(cb2_err).was_called_with("foo"); |
| 202 end); | |
| 203 | |
| 204 describe("allows callbacks to return", function () | |
| 205 it("pending promises", function () | |
| 206 local r; | |
| 207 local p = promise.resolve() | |
| 208 local cb = spy.new(function () | |
| 209 return promise.new(function (resolve) | |
| 210 r = resolve; | |
| 211 end); | |
| 212 end); | |
| 213 local cb2 = spy.new(function () end); | |
| 214 p:next(cb):next(cb2); | |
| 215 assert.spy(cb).was_called(1); | |
| 216 assert.spy(cb2).was_called(0); | |
| 217 r("hello"); | |
| 218 assert.spy(cb).was_called(1); | |
| 219 assert.spy(cb2).was_called(1); | |
| 220 assert.spy(cb2).was_called_with("hello"); | |
| 221 end); | |
| 222 | |
| 223 it("resolved promises", function () | |
| 224 local p = promise.resolve() | |
| 225 local cb = spy.new(function () | |
| 226 return promise.resolve("hello"); | |
| 227 end); | |
| 228 local cb2 = spy.new(function () end); | |
| 229 p:next(cb):next(cb2); | |
| 230 assert.spy(cb).was_called(1); | |
| 231 assert.spy(cb2).was_called(1); | |
| 232 assert.spy(cb2).was_called_with("hello"); | |
| 233 end); | |
| 234 | |
| 235 it("rejected promises", function () | |
| 236 local p = promise.resolve() | |
| 237 local cb = spy.new(function () | |
| 238 return promise.reject("hello"); | |
| 239 end); | |
| 240 local cb2 = spy.new(function () | |
| 241 return promise.reject("goodbye"); | |
| 242 end); | |
| 243 local cb3 = spy.new(function () end); | |
| 244 p:next(cb):catch(cb2):catch(cb3); | |
| 245 assert.spy(cb).was_called(1); | |
| 246 assert.spy(cb2).was_called(1); | |
| 247 assert.spy(cb2).was_called_with("hello"); | |
| 248 assert.spy(cb3).was_called(1); | |
| 249 assert.spy(cb3).was_called_with("goodbye"); | |
| 250 end); | |
| 202 end); | 251 end); |
| 203 | 252 |
| 204 describe("race()", function () | 253 describe("race()", function () |
| 205 it("works with fulfilled promises", function () | 254 it("works with fulfilled promises", function () |
| 206 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); | 255 local p1, p2 = promise.resolve("yep"), promise.resolve("nope"); |