diff options
author | Matthew Wild <mwild1@gmail.com> | 2018-08-18 15:10:41 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2018-08-18 15:10:41 +0100 |
commit | 23cfd1b4d0babdc59f13c0047e0bcbd3ebac5ade (patch) | |
tree | de56a4bf7b2c9da5d1c6c20c0975bf8259886a8f | |
parent | 61efe5330e3a1f8111973dbbb055d1d3275adc15 (diff) | |
download | prosody-23cfd1b4d0babdc59f13c0047e0bcbd3ebac5ade.tar.gz prosody-23cfd1b4d0babdc59f13c0047e0bcbd3ebac5ade.zip |
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
-rw-r--r-- | plugins/mod_pubsub/pubsub.lib.lua | 4 | ||||
-rw-r--r-- | spec/util_pubsub_spec.lua | 26 | ||||
-rw-r--r-- | util/pubsub.lua | 2 |
3 files changed, 29 insertions, 3 deletions
diff --git a/plugins/mod_pubsub/pubsub.lib.lua b/plugins/mod_pubsub/pubsub.lib.lua index af4876e8..d1231183 100644 --- a/plugins/mod_pubsub/pubsub.lib.lua +++ b/plugins/mod_pubsub/pubsub.lib.lua @@ -872,8 +872,8 @@ local function archive_itemstore(archive, config, user, node) truncate = size; }); end - function get_set:tail() - -- This should conveniently return the last item + function get_set:head() + -- This should conveniently return the most recent item local item = self:get(nil); if item then return item.attr.id, item; diff --git a/spec/util_pubsub_spec.lua b/spec/util_pubsub_spec.lua index 5e4f5ee7..3b540a2e 100644 --- a/spec/util_pubsub_spec.lua +++ b/spec/util_pubsub_spec.lua @@ -285,4 +285,30 @@ describe("util.pubsub", function () end); end); end); + + describe("item API", function () + local service; + before_each(function () + service = pubsub.new(); + service:create("test", true, { publish_model = "subscribers" }); + end); + describe("get_last_item()", function () + it("succeeds with nil on empty nodes", function () + local ok, id, item = service:get_last_item("test", true); + assert.is_true(ok); + assert.is_nil(id); + assert.is_nil(item); + end); + it("succeeds and returns the last item", function () + service:publish("test", true, "one", "hello world"); + service:publish("test", true, "two", "hello again"); + service:publish("test", true, "three", "hey"); + service:publish("test", true, "one", "bye"); + local ok, id, item = service:get_last_item("test", true); + assert.is_true(ok); + assert.equal("one", id); + assert.equal("bye", item); + end); + end); + end); end); diff --git a/util/pubsub.lua b/util/pubsub.lua index b4b9ada9..3fbf1b45 100644 --- a/util/pubsub.lua +++ b/util/pubsub.lua @@ -604,7 +604,7 @@ function service:get_last_item(node, actor) end -- Returns success, id, item - return true, self.data[node]:tail(); + return true, self.data[node]:head(); end function service:get_nodes(actor) |