save
Version:
A simple CRUD based persistence abstraction for storing objects to any backend data store. eg. Memory, MongoDB, Redis, CouchDB, Postgres, Punch Card etc.
79 lines (71 loc) • 2.29 kB
JavaScript
var async = require('async')
module.exports = function(idProperty, getEngine) {
describe('#count()', function() {
it('should return 0 count if no objects match query', function(done) {
getEngine(function(ignoreError, engine) {
engine.count({}, function(ignoreError, count) {
count.should.equal(0)
done()
})
})
})
it("should emit a 'count' event", function(done) {
getEngine(function(ignoreError, engine) {
engine.on('count', function(entity) {
entity.should.eql({ a: 1 })
done()
})
engine.count({ a: 1 }, function() {})
})
})
it("should emit a 'received' event", function(done) {
getEngine(function(ignoreError, engine) {
engine.on('received', function(data) {
data.should.eql(0)
done()
})
engine.count({ a: 1 }, function(error) {
if (error) return done(error)
})
})
})
it('should return correct count if objects match query', function(done) {
getEngine(function(ignoreError, engine) {
async.mapSeries(
[{ a: 3 }, { a: 1 }, { a: 2, b: 1 }, { a: 2, b: 2 }, { a: 2, b: 3 }],
engine.create,
function(error) {
if (error) return done(error)
engine.find({ a: 2 }, function(ignoreError, results) {
if (results.length > 3) {
console.log('count', results)
return done(new Error('Wrong number'))
}
engine.count({ a: 2 }, function(error, count) {
if (error) return done(error)
count.should.equal(3)
done()
})
})
}
)
})
})
it('should return total count with a {} query', function(done) {
getEngine(function(ignoreError, engine) {
async.mapSeries(
[{ a: 3 }, { a: 1 }, { a: 2, c: 1 }, { a: 2, c: 2 }],
engine.create,
function(error) {
if (error) return done(error)
engine.count({}, function(error, count) {
if (error) return done(error)
count.should.equal(4)
done()
})
}
)
})
})
})
}