From 44b3954d56045498adc788ca9517c33b4e56cb54 Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Thu, 18 Oct 2018 18:00:54 +0100
Subject: util.pubsub: Allow publishing with a config that should be used as
 defaults only

---
 spec/util_pubsub_spec.lua | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

(limited to 'spec')

diff --git a/spec/util_pubsub_spec.lua b/spec/util_pubsub_spec.lua
index ec6cecf8..c44832f7 100644
--- a/spec/util_pubsub_spec.lua
+++ b/spec/util_pubsub_spec.lua
@@ -87,6 +87,34 @@ describe("util.pubsub", function ()
 		end);
 	end);
 
+	describe("publish with config", function ()
+		randomize(false); -- These tests are ordered
+
+		local broadcaster = spy.new(function (notif_type, node_name, subscribers, item) -- luacheck: ignore 212
+		end);
+		local service = pubsub.new({
+			broadcaster = broadcaster;
+			autocreate_on_publish = true;
+		});
+
+		it("automatically creates node with requested config", function ()
+			assert(service:publish("node", true, "1", "item 1", { myoption = true }));
+
+			local ok, config = assert(service:get_node_config("node", true));
+			assert.equals(true, config.myoption);
+		end);
+
+		it("fails to publish to a node with differing config", function ()
+			local ok, err = service:publish("node", true, "1", "item 2", { myoption = false });
+			assert.falsy(ok);
+			assert.equals("precondition-not-met", err);
+		end);
+
+		it("allows to publish to a node with differing config when only defaults are suggested", function ()
+			assert(service:publish("node", true, "1", "item 2", { _defaults_only = true, myoption = false }));
+		end);
+	end);
+
 	describe("#issue1082", function ()
 		randomize(false); -- These tests are ordered
 
-- 
cgit v1.2.3