util_pubsub_spec: Add test for #1082
authorKim Alvefur <zash@zash.se>
Tue, 10 Jul 2018 00:22:05 +0200
changeset 9007 50a0f405e6c9
parent 9006 a971023e9b6e
child 9008 7203a1b65d1b
util_pubsub_spec: Add test for #1082
spec/util_pubsub_spec.lua
--- a/spec/util_pubsub_spec.lua	Mon Jul 09 17:46:23 2018 +0100
+++ b/spec/util_pubsub_spec.lua	Tue Jul 10 00:22:05 2018 +0200
@@ -64,4 +64,57 @@
 		end);
 
 	end);
+
+	describe("#issue1082", function ()
+		local service = pubsub.new();
+
+		it("creates a node with max_items = 1", function ()
+			assert.truthy(service:create("node", true, { max_items = 1 }));
+		end);
+
+		it("changes max_items to 2", function ()
+			assert.truthy(service:set_node_config("node", true, { max_items = 2 }));
+		end);
+
+		it("publishes one item", function ()
+			assert.truthy(service:publish("node", true, "1", "item 1"));
+		end);
+
+		it("should return one item", function ()
+			local ok, ret = service:get_items("node", true);
+			assert.truthy(ok);
+			assert.same({ "1", ["1"] = "item 1" }, ret);
+		end);
+
+		it("publishes another item", function ()
+			assert.truthy(service:publish("node", true, "2", "item 2"));
+		end);
+
+		it("should return two items", function ()
+			local ok, ret = service:get_items("node", true);
+			assert.truthy(ok);
+			assert.same({
+				"2",
+				"1",
+				["1"] = "item 1",
+				["2"] = "item 2",
+			}, ret);
+		end);
+
+		it("publishes yet another item", function ()
+			assert.truthy(service:publish("node", true, "3", "item 3"));
+		end);
+
+		it("should still return only two items", function ()
+			local ok, ret = service:get_items("node", true);
+			assert.truthy(ok);
+			assert.same({
+				"3",
+				"2",
+				["2"] = "item 2",
+				["3"] = "item 3",
+			}, ret);
+		end);
+
+	end);
 end);