lunr-mutable-indexes
Version:
Mutable indexes for lunr.js 2.x or greater
100 lines (84 loc) • 2.86 kB
JavaScript
var lunr = require('lunr');
var assert = require('chai').assert;
var lunrMutable = require('../lunr-mutable.js');
suite('mutable serialization', function () {
setup(function () {
var documents = [{
id: 'a',
title: 'Mr. Green kills Colonel Mustard',
body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
wordCount: 19
},{
id: 'b',
title: 'Plumb waters plant',
body: 'Professor Plumb has a green plant in his study',
wordCount: 9
},{
id: 'c',
title: 'Scarlett helps Professor',
body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
wordCount: 16
}]
var builder = new lunrMutable.Builder
builder.pipeline.add(
lunr.trimmer,
lunr.stopWordFilter,
lunr.stemmer
)
builder.searchPipeline.add(
lunr.stemmer
)
var config = function () {
this.ref('id')
this.field('title')
this.field('body')
documents.forEach(function (document) {
this.add(document)
}, this)
}
config.call(builder, builder)
this.idx = builder.build()
this.idx.add({
id: 'd',
title: 'Naom Chomsky',
body: 'Colorless green ideas sleep furiously',
wordCount: 5
});
this.serializedIdx = JSON.stringify(this.idx)
this.loadedIdx = lunrMutable.Index.load(JSON.parse(this.serializedIdx))
})
test('loadedAddWorked', function () {
this.loadedIdx.add({
id: 'e',
title: 'Naom Chomsky',
body: 'Colorless green ideas sleep furiously I think',
wordCount: 7
});
var results = this.loadedIdx.search('green')
assert.equal('a', results[0].ref)
assert.equal('b', results[1].ref)
assert.equal('d', results[2].ref)
assert.equal('e', results[3].ref)
assert.equal('c', results[4].ref)
})
test('loadedRemoveWorked', function () {
this.loadedIdx.remove({ id: 'b' });
var results = this.loadedIdx.search('green')
assert.equal('a', results[0].ref)
assert.equal('d', results[1].ref)
assert.equal('c', results[2].ref)
})
test('loadedUpdateWorked', function () {
this.loadedIdx.update({
id: 'd',
title: 'Naom Chomsky',
body: 'Et quo dolor velit iusto iure reprehenderit totam fugit Hic cumque distinctio consectetur suscipit qui itaque provident et Perspiciatis aut dolorum quia inventore hic Blanditiis error architecto vel et reprehenderit corporis sint Et sit modi non qui porro. Aut neque accusamus cumque nihil voluptates green',
wordCount: 46
});
var results = this.loadedIdx.search('green')
assert.equal('a', results[0].ref)
assert.equal('b', results[1].ref)
assert.equal('c', results[2].ref)
assert.equal('d', results[3].ref)
})
})