util.pubsub: Cover subscription filter in a partial test
authorKim Alvefur <zash@zash.se>
Thu, 26 Dec 2019 01:52:14 +0100
changeset 10576 d960c703e6b3
parent 10575 cfeb0077c9e9
child 10577 3b8431eed785
util.pubsub: Cover subscription filter in a partial test I'm not sure I understand spies well enough to test that the arguments and return values are as expected. Better than nothing at least.
spec/util_pubsub_spec.lua
--- a/spec/util_pubsub_spec.lua	Sat Dec 28 06:18:58 2019 +0100
+++ b/spec/util_pubsub_spec.lua	Thu Dec 26 01:52:14 2019 +0100
@@ -483,4 +483,30 @@
 
 	end);
 
+	describe("subscriber filter", function ()
+		it("works", function ()
+			local filter = spy.new(function (subs)
+				return {["modified"] = true};
+			end);
+			local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) -- luacheck: ignore 212
+			end);
+			local service = pubsub.new({
+					subscriber_filter = filter;
+					broadcaster = broadcaster;
+				});
+
+			local ok = service:create("node", true);
+			assert.truthy(ok);
+
+			local ok = service:add_subscription("node", true, "someone");
+			assert.truthy(ok);
+
+			local ok = service:publish("node", true, "1", "item");
+			assert.truthy(ok);
+			-- TODO how to match table arguments?
+			assert.spy(filter).was_called();
+			assert.spy(broadcaster).was_called();
+		end);
+	end);
+
 end);