util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
authorMatthew Wild <mwild1@gmail.com>
Sun, 12 Aug 2018 11:34:05 +0100
changeset 9176 c53663e13b51
parent 9175 822e9c5ff4a4
child 9177 160032d55ff1
util.pubsub tests: Extend publishing tests to check for correct notification behaviour on subscribe/unsubscribe
spec/util_pubsub_spec.lua
--- a/spec/util_pubsub_spec.lua	Sun Aug 12 11:33:22 2018 +0100
+++ b/spec/util_pubsub_spec.lua	Sun Aug 12 11:34:05 2018 +0100
@@ -30,7 +30,10 @@
 	end);
 
 	describe("simple publishing", function ()
-		local broadcaster = spy.new(function () end);
+		local notified;
+		local broadcaster = spy.new(function (notif_type, node_name, subscribers, item)
+			notified = subscribers;
+		end);
 		local service = pubsub.new({
 			broadcaster = broadcaster;
 		});
@@ -45,6 +48,7 @@
 
 		it("publishes an item", function ()
 			assert.truthy(service:publish("node", true, "1", "item 1"));
+			assert.truthy(notified["someone"]);
 		end);
 
 		it("called the broadcaster", function ()
@@ -57,6 +61,14 @@
 			assert.same({ "1", ["1"] = "item 1" }, ret);
 		end);
 
+		it("lets someone unsubscribe", function ()
+			assert.truthy(service:remove_subscription("node", true, "someone"));
+		end);
+
+		it("does not send notifications after subscription is removed", function ()
+			assert.truthy(service:publish("node", true, "1", "item 1"));
+			assert.is_nil(notified["someone"]);
+		end);
 	end);
 
 	describe("#issue1082", function ()