90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
'use strict';
|
|
|
|
var chai = require('chai');
|
|
var should = chai.should;
|
|
var expect = chai.expect;
|
|
|
|
var MessageDb = require('../lib/MessageDb');
|
|
var bitcore = require('bitcore');
|
|
var SIN = bitcore.SIN;
|
|
var levelup = require('levelup');
|
|
var memdown = require('memdown');
|
|
var microtime = require('microtime');
|
|
|
|
describe('MessageDb', function() {
|
|
var opts = {
|
|
name: 'test-MessageDb',
|
|
db: levelup({
|
|
db: memdown,
|
|
sync: true,
|
|
valueEncoding: 'json'
|
|
})
|
|
};
|
|
it('should be able to create instance', function() {
|
|
var mdb = new MessageDb(opts);
|
|
expect(mdb).to.exist;
|
|
});
|
|
it('should be able to create default instance', function() {
|
|
var mdb = MessageDb.default();
|
|
expect(mdb).to.exist;
|
|
});
|
|
var from = new SIN(new Buffer('dadbad00', 'hex'));
|
|
var to = new SIN(new Buffer('bacacafe', 'hex'));
|
|
var message = {
|
|
a: 1,
|
|
b: 2
|
|
};
|
|
var message2 = {};
|
|
var message3 = ['a', 'b'];
|
|
it('should be able to add and read a message', function(done) {
|
|
var mdb = new MessageDb(opts);
|
|
var lower_ts = microtime.now();
|
|
mdb.addMessage(message, from, to, function(err) {
|
|
expect(err).to.not.exist;
|
|
var upper_ts = microtime.now();
|
|
mdb.getMessages(from, to, lower_ts, upper_ts, function(err, messages) {
|
|
expect(err).to.not.exist;
|
|
messages.length.should.equal(1);
|
|
messages[0].ts.should.be.below(upper_ts);
|
|
messages[0].ts.should.be.above(lower_ts);
|
|
var m = messages[0].message;
|
|
m.a.should.equal(1);
|
|
m.b.should.equal(2);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
it('should be able to add many messages and read them', function(done) {
|
|
var mdb = new MessageDb(opts);
|
|
var lower_ts = microtime.now();
|
|
mdb.addMessage(message, from, to, function(err) {
|
|
expect(err).to.not.exist;
|
|
mdb.addMessage(message2, from, to, function(err) {
|
|
expect(err).to.not.exist;
|
|
var upper_ts = microtime.now();
|
|
setTimeout(function() {
|
|
mdb.addMessage(message3, from, to, function(err) {
|
|
expect(err).to.not.exist;
|
|
mdb.getMessages(from, to, lower_ts, upper_ts, function(err, messages) {
|
|
expect(err).to.not.exist;
|
|
messages.length.should.equal(2);
|
|
messages[0].ts.should.be.below(upper_ts);
|
|
messages[0].ts.should.be.above(lower_ts);
|
|
JSON.stringify(messages[0].message).should.equal('{"a":1,"b":2}');
|
|
messages[1].ts.should.be.below(upper_ts);
|
|
messages[1].ts.should.be.above(lower_ts);
|
|
JSON.stringify(messages[1].message).should.equal('{}');
|
|
done();
|
|
});
|
|
});
|
|
}, 10);
|
|
});
|
|
});
|
|
});
|
|
it('should be able to close instance', function() {
|
|
var mdb = new MessageDb(opts);
|
|
mdb.close();
|
|
expect(mdb).to.exist;
|
|
});
|
|
});
|