mirror of https://gitee.com/bigwinds/arangodb
289 lines
8.2 KiB
JavaScript
289 lines
8.2 KiB
JavaScript
/*jshint globalstrict:false, strict:false */
|
|
/* global getOptions, assertTrue, assertFalse, assertEqual, assertMatch, fail, arango */
|
|
|
|
|
|
const jsunity = require('jsunity');
|
|
const internal = require('internal');
|
|
const error = internal.errors;
|
|
//const print = internal.print;
|
|
|
|
function testSuite() {
|
|
const endpoint = arango.getEndpoint();
|
|
const db = require("@arangodb").db;
|
|
const name = "vimoji";
|
|
|
|
return {
|
|
setUp: function() {},
|
|
tearDown: function() {
|
|
arango.DELETE("/_api/analyzer/" + name + "?force=true");
|
|
},
|
|
|
|
testAnalyzerGet : function() {
|
|
let result = arango.GET("/_api/analyzer");
|
|
assertEqual(result.error, false);
|
|
assertEqual(result.code, 200);
|
|
assertEqual(result.result.length, 13);
|
|
},
|
|
|
|
testAnalyzerGetInvalid : function() {
|
|
let result = arango.GET("/_api/analyzer/invalid");
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 404);
|
|
assertEqual(result.errorNum, error.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code);
|
|
},
|
|
|
|
|
|
testAnalyzerCreateIdentity : function() {
|
|
let body = JSON.stringify({
|
|
type : "identity",
|
|
name : name,
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerCreateRemoveIdentiy : function() {
|
|
let body = JSON.stringify({
|
|
type : "identity",
|
|
name : name,
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
result = arango.DELETE("/_api/analyzer/" + name);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 200);
|
|
result = arango.DELETE("/_api/analyzer/" + name);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 404); // already deleted
|
|
},
|
|
|
|
testAnalyzerCreateDoubleIdentity : function() {
|
|
let body = JSON.stringify({
|
|
type : "identity",
|
|
name : name,
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertEqual(result.code, 201);
|
|
result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertEqual(result.code, 200);
|
|
},
|
|
|
|
|
|
testAnalyzerCreateText : function() {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerReplaceInplaceText : function() {
|
|
// try to replace inplace which is forbidden
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
|
|
body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
properties : { locale: "de.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 400);
|
|
},
|
|
|
|
testAnalyzerCreateTextMissingName : function() {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 400);
|
|
assertEqual(result.errorNum, error.ERROR_HTTP_BAD_PARAMETER.code);
|
|
},
|
|
|
|
testAnalyzerCreateTextMissingProperties1 : function() {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
//properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 400);
|
|
assertEqual(result.errorNum, error.ERROR_HTTP_BAD_PARAMETER.code);
|
|
},
|
|
|
|
testAnalyzerCreateTextMissingProperties2 : function() {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
properties : { stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 400);
|
|
assertEqual(result.errorNum, error.ERROR_HTTP_BAD_PARAMETER.code);
|
|
},
|
|
|
|
testAnalyzerCreateTextInvalidProperties1 : function() {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name,
|
|
properties : { locale: "en.UTF-8" , stopwords: { invalid : "property" } },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 400);
|
|
assertEqual(result.errorNum, error.ERROR_HTTP_BAD_PARAMETER.code);
|
|
},
|
|
|
|
testAnalyzerCreateDelimited : function() {
|
|
let body = JSON.stringify({
|
|
type : "delimiter",
|
|
name : name,
|
|
properties : { delimiter : "❤" } , // .hsv - heart separated value list :)
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerCreateNgram : function() {
|
|
let body = JSON.stringify({
|
|
type : "ngram",
|
|
name : name,
|
|
properties : { min : 3, max : 4, preserveOriginal : true } ,
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerCreateNorm: function () {
|
|
let body = JSON.stringify({
|
|
type: "norm",
|
|
name: name,
|
|
properties: { locale: "en.UTF-8", accent:true, stemming: false },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerCreateStem: function () {
|
|
let body = JSON.stringify({
|
|
type: "stem",
|
|
name: name,
|
|
properties: { locale: "en.UTF-8" },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
},
|
|
|
|
testAnalyzerDifferentDB : function() {
|
|
let rv = db._createDatabase("ulf");
|
|
let body = JSON.stringify({
|
|
type : "identity",
|
|
name : name,
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_db/ulf/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
db._dropDatabase("ulf");
|
|
},
|
|
|
|
testAnalyzerCreateMany : function() {
|
|
// should be last test as we do no clean-up
|
|
const num = 10;
|
|
for (var i = 0; i < num; i++) {
|
|
let body = JSON.stringify({
|
|
type : "text",
|
|
name : name + i,
|
|
properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
assertEqual(result.code, 201);
|
|
}
|
|
|
|
let res = arango.GET("/_api/analyzer");
|
|
assertEqual(res.result.length, num + 13); // vimoji(0..9) + static
|
|
|
|
for (var j = 0; j < num; j++) {
|
|
arango.DELETE("/_api/analyzer/" + name + j);
|
|
}
|
|
},
|
|
|
|
testAnalyzerLinks : function() {
|
|
let body = JSON.stringify({
|
|
name : name,
|
|
type : "text",
|
|
properties : { locale: "en.UTF-8", stopwords: [ ] },
|
|
});
|
|
|
|
let result = arango.POST_RAW("/_api/analyzer", body);
|
|
assertFalse(result.error);
|
|
|
|
let col = db._create("ulfColTestLinks");
|
|
let view = db._createView("ulfViewTestLinks", "arangosearch", {});
|
|
var properties = {
|
|
links : {
|
|
[col.name()] : {
|
|
includeAllFields : true,
|
|
storeValues : "id",
|
|
fields : {
|
|
text : { analyzers : [name] }
|
|
}
|
|
}
|
|
}
|
|
};
|
|
view.properties(properties);
|
|
|
|
result = arango.DELETE("/_api/analyzer/" + name);
|
|
|
|
assertTrue(result.error);
|
|
assertEqual(result.code, 409); // can not delete -- referencded by link
|
|
assertEqual(result.errorNum, error.ERROR_ARANGO_CONFLICT.code);
|
|
|
|
// delete with force - must succeed
|
|
result = arango.DELETE("/_api/analyzer/" + name + "?force=true");
|
|
assertFalse(result.error);
|
|
|
|
db._drop(col.name());
|
|
}
|
|
}; // return
|
|
} // end of suite
|
|
jsunity.run(testSuite);
|
|
return jsunity.done();
|