aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2018-08-18 15:10:41 +0100
committerMatthew Wild <mwild1@gmail.com>2018-08-18 15:10:41 +0100
commit84a825533fefa3df91d2f0d61870375862d4ea1e (patch)
treede56a4bf7b2c9da5d1c6c20c0975bf8259886a8f
parentdf1abfdd10b291f3d170b2be1a8ce6ffd3b2ccc0 (diff)
downloadprosody-84a825533fefa3df91d2f0d61870375862d4ea1e.tar.gz
prosody-84a825533fefa3df91d2f0d61870375862d4ea1e.zip
Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes
-rw-r--r--plugins/mod_pubsub/pubsub.lib.lua4
-rw-r--r--spec/util_pubsub_spec.lua26
-rw-r--r--util/pubsub.lua2
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)