Fix memory adapter and test
This commit is contained in:
parent
b6fb04ffe1
commit
e75029ebbf
|
@ -19,7 +19,7 @@ Memory.prototype.define = function defineModel(descr) {
|
||||||
Memory.prototype.create = function create(model, data, callback) {
|
Memory.prototype.create = function create(model, data, callback) {
|
||||||
var id = data.id || this.ids[model]++;
|
var id = data.id || this.ids[model]++;
|
||||||
data.id = id;
|
data.id = id;
|
||||||
this.cache[model][id] = data;
|
this.cache[model][id] = JSON.stringify(data);
|
||||||
process.nextTick(function () {
|
process.nextTick(function () {
|
||||||
callback(null, id);
|
callback(null, id);
|
||||||
});
|
});
|
||||||
|
@ -40,7 +40,7 @@ Memory.prototype.updateOrCreate = function (model, data, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Memory.prototype.save = function save(model, data, callback) {
|
Memory.prototype.save = function save(model, data, callback) {
|
||||||
this.cache[model][data.id] = data;
|
this.cache[model][data.id] = JSON.stringify(data);
|
||||||
process.nextTick(function () {
|
process.nextTick(function () {
|
||||||
callback(null, data);
|
callback(null, data);
|
||||||
});
|
});
|
||||||
|
@ -54,7 +54,7 @@ Memory.prototype.exists = function exists(model, id, callback) {
|
||||||
|
|
||||||
Memory.prototype.find = function find(model, id, callback) {
|
Memory.prototype.find = function find(model, id, callback) {
|
||||||
process.nextTick(function () {
|
process.nextTick(function () {
|
||||||
callback(null, this.cache[model][id]);
|
callback(null, id in this.cache[model] && JSON.parse(this.cache[model][id]));
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -64,8 +64,9 @@ Memory.prototype.destroy = function destroy(model, id, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Memory.prototype.all = function all(model, filter, callback) {
|
Memory.prototype.all = function all(model, filter, callback) {
|
||||||
|
var self = this;
|
||||||
var nodes = Object.keys(this.cache[model]).map(function (key) {
|
var nodes = Object.keys(this.cache[model]).map(function (key) {
|
||||||
return this.cache[model][key];
|
return JSON.parse(this.cache[model][key]);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
|
|
||||||
if (filter) {
|
if (filter) {
|
||||||
|
@ -97,7 +98,11 @@ Memory.prototype.all = function all(model, filter, callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
process.nextTick(function () {
|
process.nextTick(function () {
|
||||||
callback(null, nodes);
|
if (filter && filter.include) {
|
||||||
|
self._models[model].model.include(nodes, filter.include, callback);
|
||||||
|
} else {
|
||||||
|
callback(null, nodes);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function sorting(a, b) {
|
function sorting(a, b) {
|
||||||
|
@ -133,6 +138,15 @@ function applyFilter(filter) {
|
||||||
}
|
}
|
||||||
if (typeof example === 'undefined') return undefined;
|
if (typeof example === 'undefined') return undefined;
|
||||||
if (typeof value === 'undefined') return undefined;
|
if (typeof value === 'undefined') return undefined;
|
||||||
|
if (typeof example === 'object') {
|
||||||
|
if (example.inq) {
|
||||||
|
if (!value) return false;
|
||||||
|
for (var i = 0; i < example.inq.length; i += 1) {
|
||||||
|
if (example.inq[i] == value) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
// not strict equality
|
// not strict equality
|
||||||
return (example !== null ? example.toString() : example) == (value !== null ? value.toString() : value);
|
return (example !== null ? example.toString() : example) == (value !== null ? value.toString() : value);
|
||||||
}
|
}
|
||||||
|
@ -153,7 +167,7 @@ Memory.prototype.count = function count(model, callback, where) {
|
||||||
data = data.filter(function (id) {
|
data = data.filter(function (id) {
|
||||||
var ok = true;
|
var ok = true;
|
||||||
Object.keys(where).forEach(function (key) {
|
Object.keys(where).forEach(function (key) {
|
||||||
if (cache[id][key] != where[key]) {
|
if (JSON.parse(cache[id])[key] != where[key]) {
|
||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,10 +10,12 @@ describe('include', function() {
|
||||||
passports.length.should.be.ok;
|
passports.length.should.be.ok;
|
||||||
passports.forEach(function(p) {
|
passports.forEach(function(p) {
|
||||||
p.__cachedRelations.should.have.property('owner');
|
p.__cachedRelations.should.have.property('owner');
|
||||||
if (p.ownerId === null) {
|
var owner = p.__cachedRelations.owner;
|
||||||
should.not.exist(p.__cachedRelations.owner);
|
if (!p.ownerId) {
|
||||||
|
should.not.exist(owner);
|
||||||
} else {
|
} else {
|
||||||
p.__cachedRelations.owner.id.should.equal(p.ownerId);
|
should.exist(owner);
|
||||||
|
owner.id.should.equal(p.ownerId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
done();
|
done();
|
||||||
|
@ -43,9 +45,10 @@ describe('include', function() {
|
||||||
passports.forEach(function(p) {
|
passports.forEach(function(p) {
|
||||||
p.__cachedRelations.should.have.property('owner');
|
p.__cachedRelations.should.have.property('owner');
|
||||||
var user = p.__cachedRelations.owner;
|
var user = p.__cachedRelations.owner;
|
||||||
if (p.ownerId === null) {
|
if (!p.ownerId) {
|
||||||
should.not.exist(user);
|
should.not.exist(user);
|
||||||
} else {
|
} else {
|
||||||
|
should.exist(user);
|
||||||
user.id.should.equal(p.ownerId);
|
user.id.should.equal(p.ownerId);
|
||||||
user.__cachedRelations.should.have.property('posts');
|
user.__cachedRelations.should.have.property('posts');
|
||||||
user.__cachedRelations.posts.forEach(function(pp) {
|
user.__cachedRelations.posts.forEach(function(pp) {
|
||||||
|
@ -67,9 +70,10 @@ describe('include', function() {
|
||||||
passports.forEach(function(p) {
|
passports.forEach(function(p) {
|
||||||
p.__cachedRelations.should.have.property('owner');
|
p.__cachedRelations.should.have.property('owner');
|
||||||
var user = p.__cachedRelations.owner;
|
var user = p.__cachedRelations.owner;
|
||||||
if (p.ownerId === null) {
|
if (!p.ownerId) {
|
||||||
should.not.exist(user);
|
should.not.exist(user);
|
||||||
} else {
|
} else {
|
||||||
|
should.exist(user);
|
||||||
user.id.should.equal(p.ownerId);
|
user.id.should.equal(p.ownerId);
|
||||||
user.__cachedRelations.should.have.property('posts');
|
user.__cachedRelations.should.have.property('posts');
|
||||||
user.__cachedRelations.posts.forEach(function(pp) {
|
user.__cachedRelations.posts.forEach(function(pp) {
|
||||||
|
|
Loading…
Reference in New Issue