mirror of
https://github.com/linuxserver/core.git
synced 2026-02-20 05:07:19 +08:00
71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
"use server";
|
|
|
|
var assert = require("assert");
|
|
|
|
var InstanceCache = require("./instance_cache");
|
|
|
|
|
|
module.exports = {
|
|
//"test lazy create "
|
|
|
|
"test lazy create should not call factory if object is in cache": function(next) {
|
|
InstanceCache.lazyCreate("foo", {foo: "bar"}, {}, null, function(err, item) {
|
|
assert.equal(err, null);
|
|
assert.equal(item, "bar");
|
|
next();
|
|
});
|
|
},
|
|
|
|
"test lazy create should call factory if object is not in the cache": function(next) {
|
|
InstanceCache.lazyCreate("foo", {}, {}, function(callback) {
|
|
callback(null, "bar");
|
|
}, function(err, item) {
|
|
assert.equal(err, null);
|
|
assert.equal(item, "bar");
|
|
next();
|
|
});
|
|
},
|
|
|
|
"test lazy create should call factory only once": function(next) {
|
|
var called = false;
|
|
var factory = function(callback) {
|
|
assert.equal(called, false);
|
|
called = true;
|
|
setTimeout(function() {
|
|
callback(null, "bar");
|
|
}, 10);
|
|
};
|
|
var cache = {};
|
|
var callbackStore = {};
|
|
|
|
InstanceCache.lazyCreate("foo", cache, callbackStore, factory, function(err, item) {
|
|
assert.equal(err, null);
|
|
assert.equal(item, "bar");
|
|
|
|
InstanceCache.lazyCreate("foo", cache, callbackStore, factory, function(err, item) {
|
|
assert.equal(err, null);
|
|
assert.equal(item, "bar");
|
|
next();
|
|
});
|
|
});
|
|
},
|
|
|
|
"test failed create should not be stored in the cache": function(next) {
|
|
var cache = new InstanceCache(0, function(callback) {
|
|
return callback("error");
|
|
});
|
|
|
|
cache.get("id1", [], function(err) {
|
|
assert.equal(err, "error");
|
|
assert.equal(arguments.length, 1);
|
|
|
|
assert.ok(!cache.has("id1"));
|
|
|
|
next();
|
|
});
|
|
}
|
|
};
|
|
|
|
!module.parent && require("asyncjs").test.testcase(module.exports).exec(); |