1
0
Fork 0
arangodb/tests/js/client/shell/shell-analyzer-rest-api.js

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();