Pubsub: Add tests for :get_last_item() and fix for non-persistent nodes

vault/0.11
Matthew Wild 8 years ago
parent df1abfdd10
commit 84a825533f
  1. 4
      plugins/mod_pubsub/pubsub.lib.lua
  2. 26
      spec/util_pubsub_spec.lua
  3. 2
      util/pubsub.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;

@ -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);

@ -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)

Loading…
Cancel
Save