npm-kludge-search
Version:
Kludgy fast npm searcher
99 lines (77 loc) • 2.5 kB
JavaScript
;
var populateDb = require('../lib/populateDb'),
getDb = require('../lib/getDb'),
makeDb = require('../lib/makeDb'),
testDB = './test.pft';
var samplePackage = {
name: 'package',
description: 'blah blah foobar',
maintainers: [ {name: 'blither' } ],
versions: { '1.0.0': 'latest' },
time: { modified: '2014-04-01T14:21:13' },
keywords: 'test, sample',
url: 'https://github.org/nobody/package/'
};
var rimraf = require('rimraf');
var Code = require('code');
var Lab = require('lab');
var lab = Lab.script();
exports.lab = lab;
var describe = lab.describe;
var it = lab.it;
var expect = Code.expect;
describe('cleanup objects', function () {
it('gracefully handles missing members', function (done) {
var db = populateDb({prepare: function () {return; }});
db.cleanPackage({});
done();
});
});
describe('populate db', function () {
lab.after(function (done) {
rimraf(testDB, done);
});
it('can add a record and freeze db', function (done) {
getDb(testDB, function (err, db) {
expect(err).to.equal(null);
// wrap db
db = populateDb(db);
db.addPackage(samplePackage);
db.get('package', function (err, row) {
expect(err).to.equal(null);
expect(row.name).to.equal('package');
db.freeze(testDB, function (err) {
expect(!err).to.equal(true);
done();
});
});
});
});
it('misses missing records', function (done) {
makeDb(testDB, function (err, db) {
expect(err).to.equal(null);
// wrap db
db = populateDb(db);
db.get('missing', function (err) {
expect(err).to.be.instanceof(Error);
done();
});
});
});
it('can find by fts', function (done) {
makeDb(testDB, function (err, db) {
var rows = 0;
expect(err).to.equal(null);
db = populateDb(db);
db.search('foobar', function (err, val) {
expect(err).to.equal(null);
expect(val.name).to.equal('package');
rows += 1;
}, function (err) {
expect(err).to.equal();
expect(rows).to.equal(1);
done();
});
});
});
});