Software / code / prosody
Comparison
spec/util_pubsub_spec.lua @ 9173:c53663e13b51
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 12 Aug 2018 11:34:05 +0100 |
| parent | 9171:5f03fe90704f |
| child | 9174:160032d55ff1 |
comparison
equal
deleted
inserted
replaced
| 9172:822e9c5ff4a4 | 9173:c53663e13b51 |
|---|---|
| 28 end); | 28 end); |
| 29 end); | 29 end); |
| 30 end); | 30 end); |
| 31 | 31 |
| 32 describe("simple publishing", function () | 32 describe("simple publishing", function () |
| 33 local broadcaster = spy.new(function () end); | 33 local notified; |
| 34 local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) | |
| 35 notified = subscribers; | |
| 36 end); | |
| 34 local service = pubsub.new({ | 37 local service = pubsub.new({ |
| 35 broadcaster = broadcaster; | 38 broadcaster = broadcaster; |
| 36 }); | 39 }); |
| 37 | 40 |
| 38 it("creates a node", function () | 41 it("creates a node", function () |
| 43 assert.truthy(service:add_subscription("node", true, "someone")); | 46 assert.truthy(service:add_subscription("node", true, "someone")); |
| 44 end); | 47 end); |
| 45 | 48 |
| 46 it("publishes an item", function () | 49 it("publishes an item", function () |
| 47 assert.truthy(service:publish("node", true, "1", "item 1")); | 50 assert.truthy(service:publish("node", true, "1", "item 1")); |
| 51 assert.truthy(notified["someone"]); | |
| 48 end); | 52 end); |
| 49 | 53 |
| 50 it("called the broadcaster", function () | 54 it("called the broadcaster", function () |
| 51 assert.spy(broadcaster).was_called(); | 55 assert.spy(broadcaster).was_called(); |
| 52 end); | 56 end); |
| 55 local ok, ret = service:get_items("node", true); | 59 local ok, ret = service:get_items("node", true); |
| 56 assert.truthy(ok); | 60 assert.truthy(ok); |
| 57 assert.same({ "1", ["1"] = "item 1" }, ret); | 61 assert.same({ "1", ["1"] = "item 1" }, ret); |
| 58 end); | 62 end); |
| 59 | 63 |
| 64 it("lets someone unsubscribe", function () | |
| 65 assert.truthy(service:remove_subscription("node", true, "someone")); | |
| 66 end); | |
| 67 | |
| 68 it("does not send notifications after subscription is removed", function () | |
| 69 assert.truthy(service:publish("node", true, "1", "item 1")); | |
| 70 assert.is_nil(notified["someone"]); | |
| 71 end); | |
| 60 end); | 72 end); |
| 61 | 73 |
| 62 describe("#issue1082", function () | 74 describe("#issue1082", function () |
| 63 local service = pubsub.new(); | 75 local service = pubsub.new(); |
| 64 | 76 |