Comparison

spec/core_storagemanager_spec.lua @ 9471:6798fcd25e9c

storagemanager tests: Add many more archive tests, including (failing) cases for #1200 and #1073
author Matthew Wild <mwild1@gmail.com>
date Thu, 11 Oct 2018 14:10:55 +0100
parent 9470:0d491bc98b9f
child 9472:ea40fe484c38
comparison
equal deleted inserted replaced
9470:0d491bc98b9f 9471:6798fcd25e9c
201 assert(when >= test_time, ("%d >= %d"):format(when, test_time)); 201 assert(when >= test_time, ("%d >= %d"):format(when, test_time));
202 assert(when <= test_time+1, ("%d <= %d"):format(when, test_time+1)); 202 assert(when <= test_time+1, ("%d <= %d"):format(when, test_time+1));
203 end 203 end
204 assert.equal(2, count); 204 assert.equal(2, count);
205 end); 205 end);
206 end);
207
208 it("can selectively delete items", function ()
209 local delete_id;
210 do
211 local data = assert(archive:find("user", {}));
212 local count = 0;
213 for id, item, when in data do --luacheck: ignore 213/item 213/when
214 count = count + 1;
215 if count == 2 then
216 delete_id = id;
217 end
218 assert.truthy(id);
219 end
220 assert.equal(#test_data, count);
221 end
222
223 assert(archive:delete("user", { key = delete_id }));
224
225 do
226 local data = assert(archive:find("user", {}));
227 local count = 0;
228 for id, item, when in data do --luacheck: ignore 213/item 213/when
229 count = count + 1;
230 assert.truthy(id);
231 assert.not_equal(delete_id, id);
232 end
233 assert.equal(#test_data-1, count);
234 end
206 end); 235 end);
207 236
208 it("can be purged", function () 237 it("can be purged", function ()
209 local ok, err = archive:delete("user"); 238 local ok, err = archive:delete("user");
210 assert.truthy(ok); 239 assert.truthy(ok);
216 for id, item, when in data do -- luacheck: ignore id item when 245 for id, item, when in data do -- luacheck: ignore id item when
217 count = count + 1; 246 count = count + 1;
218 end 247 end
219 assert.equal(0, count); 248 assert.equal(0, count);
220 end); 249 end);
250
251 it("can truncate the oldest items", function ()
252 local username = "user-truncate";
253 for i = 1, 10 do
254 assert(archive:append(username, nil, test_stanza, i, "contact@example.com"));
255 end
256 assert(archive:delete(username, { truncate = 3 }));
257
258 do
259 local data = assert(archive:find(username, {}));
260 local count = 0;
261 for id, item, when in data do --luacheck: ignore 213/when
262 count = count + 1;
263 assert.truthy(id);
264 assert(st.is_stanza(item));
265 assert(when > 7, ("%d > 7"):format(when));
266 end
267 assert.equal(3, count);
268 end
269 end);
270
271 it("overwrites existing keys with new data", function ()
272 local prefix = ("a"):rep(50);
273 local username = "user-overwrite";
274 assert(archive:append(username, prefix.."-1", test_stanza, test_time, "contact@example.com"));
275 assert(archive:append(username, prefix.."-2", test_stanza, test_time, "contact@example.com"));
276
277 do
278 local data = assert(archive:find(username, {}));
279 local count = 0;
280 for id, item, when in data do --luacheck: ignore 213/when
281 count = count + 1;
282 assert.truthy(id);
283 assert.equals(("%s-%d"):format(prefix, count), id);
284 assert(st.is_stanza(item));
285 end
286 assert.equal(2, count);
287 end
288
289 local new_stanza = st.clone(test_stanza);
290 new_stanza.attr.foo = "bar";
291 assert(archive:append(username, prefix.."-2", new_stanza, test_time+1, "contact2@example.com"));
292
293 do
294 local data = assert(archive:find(username, {}));
295 local count = 0;
296 for id, item, when in data do
297 count = count + 1;
298 assert.truthy(id);
299 assert.equals(("%s-%d"):format(prefix, count), id);
300 assert(st.is_stanza(item));
301 if count == 2 then
302 assert.equals(test_time+1, when);
303 assert.equals("bar", item.attr.foo);
304 end
305 end
306 assert.equal(2, count);
307 end
308 end);
309
310 it("can contain multiple long unique keys #issue1073", function ()
311 local prefix = ("a"):rep(50);
312 assert(archive:append("user-issue1073", prefix.."-1", test_stanza, test_time, "contact@example.com"));
313 assert(archive:append("user-issue1073", prefix.."-2", test_stanza, test_time, "contact@example.com"));
314
315 local data = assert(archive:find("user-issue1073", {}));
316 local count = 0;
317 for id, item, when in data do --luacheck: ignore 213/when
318 print(id)
319 count = count + 1;
320 assert.truthy(id);
321 assert(st.is_stanza(item));
322 end
323 assert.equal(2, count);
324 assert(archive:delete("user-issue1073"));
325 end);
221 end); 326 end);
222 end); 327 end);
223 end 328 end
224 end); 329 end);