1
0

Added support for tokenizing terms, negating terms, and quoted terms

This commit is contained in:
Tristan Jones
2018-04-04 11:09:38 -07:00
parent fdcb6e7af3
commit d743961ac2
2 changed files with 102 additions and 8 deletions

View File

@@ -14,6 +14,62 @@ describe('Search query syntax parser', function () {
parsedSearchQuery.should.equal(searchQuery);
});
it('should return a tokenized string when option is set', function () {
var searchQuery = "fancy pyjama wear";
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy', 'pyjama', 'wear']);
});
it('should return a tokenized string when option is set, respecting double-quotes and escapes', function () {
var searchQuery = 'fancy "py\\"j\\"am\'a w\'ear"';
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy', 'py"j"am\'a w\'ear']);
});
it('should return a tokenized string when option is set, respecting single-quotes and escapes', function () {
var searchQuery = "fancy 'py\\'j\\'am\"a w\"ear'";
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy', "py'j'am\"a w\"ear"]);
});
it('should return a tokenized string with negation of unquoted terms', function () {
var searchQuery = "fancy -pyjama -wear";
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy']);
parsedSearchQuery.should.have.property('exclude', {text: ['pyjama', 'wear']});
});
it('should return a tokenized string with negation of single-quoted terms', function () {
var searchQuery = "fancy -'pyjama -wear'";
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy']);
parsedSearchQuery.should.have.property('exclude', {text: 'pyjama -wear'});
});
it('should return a tokenized string with negation of double-quoted terms', function () {
var searchQuery = 'fancy -"pyjama -wear"';
var options = { tokenize: true };
var parsedSearchQuery = searchquery.parse(searchQuery, options);
parsedSearchQuery.should.be.an.Object;
parsedSearchQuery.should.have.property('text', ['fancy']);
parsedSearchQuery.should.have.property('exclude', {text: 'pyjama -wear'});
});
it('should parse a single keyword with no text', function () {
var searchQuery = 'from:jul@foo.com';