1
0
mirror of https://github.com/nextapps-de/flexsearch.git synced 2025-10-01 15:46:40 +02:00
Files
flexsearch/test/test.es6.js
2019-02-23 17:57:48 +01:00

180 lines
6.3 KiB
JavaScript

if(typeof module !== "undefined"){
var env = "pre";
var expect = require("chai").expect;
var FlexSearch = require("../" + (env ? "dist/": "") + "flexsearch" + (env ? "." + env : "") + ".js");
}
// ------------------------------------------------------------------------
// Multi-Field Documents
// ------------------------------------------------------------------------
describe("Index Multi-Field Documents (ES6)", function(){
var data = [{
id: 2,
data:{
title: "Title 3",
body: "Body 3"
}
},{
id: 1,
data:{
title: "Title 2",
body: "Body 2"
}
},{
id: 0,
data:{
title: "Title 1",
body: "Body 1"
}
}];
var update = [{
id: 0,
data:{
title: "Foo 1",
body: "Bar 1"
}
},{
id: 1,
data:{
title: "Foo 2",
body: "Bar 2"
}
},{
id: 2,
data:{
title: "Foo 3",
body: "Bar 3"
}
}];
it("Should have been indexed properly (Async)", async function(){
var index = new FlexSearch({
async: true,
doc: {
id: "id",
field: [
"data:title",
"data:body"
]
}
});
await index.add(data);
if(env === ""){
expect(index.doc.index["data:title"].length).to.equal(3);
expect(index.doc.index["data:body"].length).to.equal(3);
}
expect(await index.search({field: "data:body", query: "body"})).to.have.members(data);
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
expect(await index.search({field: "data:body", query: "title"})).to.have.lengthOf(0);
expect(await index.search({field: "data:title", query: "body"})).to.have.lengthOf(0);
expect(await index.search({field: ["data:title", "data:body"], query: "body", bool: "or"})).to.have.members(data);
expect(await index.search({field: ["data:body", "data:title"], query: "title", bool: "or"})).to.have.members(data);
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
expect(await index.search({query: "body", bool: "or"})).to.have.members(data);
expect(await index.search("title", {bool: "or"})).to.have.members(data);
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
await index.update(update);
expect(await index.search("foo", {bool: "or"})).not.to.have.members(data);
expect(await index.search("bar", {bool: "or"})).not.to.have.members(data);
expect(await index.search("foo", {bool: "or"})).to.have.members(update);
expect(await index.search("bar", {bool: "or"})).to.have.members(update);
expect(await index.search("foo", {field: "data:title"})).not.to.have.members(data);
expect(await index.search("bar", {field: "data:body"})).not.to.have.members(data);
expect(await index.search("foo", {field: "data:title"})).to.have.members(update);
expect(await index.search("bar", {field: "data:body"})).to.have.members(update);
await index.remove(update);
if(env === ""){
expect(await index.doc.index["data:title"].length).to.equal(0);
expect(await index.doc.index["data:body"].length).to.equal(0);
}
});
it("Should have been indexed properly (Worker)", async function(){
var index = new FlexSearch({
worker: 4,
async: true,
doc: {
id: "id",
field: [
"data:title",
"data:body"
]
}
});
await index.add(data);
if(env === ""){
expect(index.doc.index["data:title"].length).to.equal(3);
expect(index.doc.index["data:body"].length).to.equal(3);
}
expect(await index.search({field: "data:body", query: "body"})).to.have.members(data);
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
expect(await index.search({field: "data:body", query: "title"})).to.have.lengthOf(0);
expect(await index.search({field: "data:title", query: "body"})).to.have.lengthOf(0);
expect(await index.search({field: ["data:title", "data:body"], query: "body", bool: "or"})).to.have.members(data);
expect(await index.search({field: ["data:body", "data:title"], query: "title", bool: "or"})).to.have.members(data);
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
expect(await index.search({query: "body", bool: "or"})).to.have.members(data);
expect(await index.search("title", {bool: "or"})).to.have.members(data);
expect(await index.search({query: "body", field: "data:body"})).to.have.members(data);
expect(await index.search("title", {field: "data:title"})).to.have.members(data);
await index.update(update);
expect(await index.search("foo", {bool: "or"})).not.to.have.members(data);
expect(await index.search("bar", {bool: "or"})).not.to.have.members(data);
expect(await index.search("foo", {bool: "or"})).to.have.members(update);
expect(await index.search("bar", {bool: "or"})).to.have.members(update);
expect(await index.search("foo", {field: "data:title"})).not.to.have.members(data);
expect(await index.search("bar", {field: "data:body"})).not.to.have.members(data);
expect(await index.search("foo", {field: "data:title"})).to.have.members(update);
expect(await index.search("bar", {field: "data:body"})).to.have.members(update);
await index.remove(update);
if(env === ""){
expect(await index.doc.index["data:title"].length).to.equal(0);
expect(await index.doc.index["data:body"].length).to.equal(0);
}
});
});