Modify search autocomplete to respect spaces

The tokenizing regex for search autocomplete no longer strips away
trailing whitespace. This fixes cases like this:
  http://imgur.com/a/wUYP5

Bug: Issue 4842
Change-Id: If5f33ae18eaa08676fd504a7cf2f6d81029ecb7a
This commit is contained in:
Kasper Nilsson
2016-11-09 14:47:53 -08:00
parent a67575aa90
commit ad47fe8285
2 changed files with 44 additions and 44 deletions

View File

@@ -80,7 +80,7 @@
var MAX_AUTOCOMPLETE_RESULTS = 10;
var TOKENIZE_REGEX = /(?:[^\s"]+|"[^"]*")+/g;
var TOKENIZE_REGEX = /(?:[^\s"]+|"[^"]*")+\s*/g;
Polymer({
is: 'gr-search-bar',

View File

@@ -129,61 +129,61 @@ limitations under the License.
element.$.restAPI.getSuggestedProjects.restore();
});
test('Autocompletes accounts',
function(done) {
return element._getSearchSuggestions('owner:fr')
.then(function(suggestions) {
assert.equal(suggestions[0].value, 'owner:"fred <fred@goog.co>"');
done();
});
test('Autocompletes accounts', function(done) {
element._getSearchSuggestions('owner:fr').then(function(s) {
assert.equal(s[0].value, 'owner:"fred <fred@goog.co>"');
done();
});
});
test('Autocompletes groups',
function(done) {
return element._getSearchSuggestions('ownerin:pol')
.then(function(suggestions) {
assert.equal(suggestions[0].value, 'ownerin:Polygerrit');
done();
});
test('Autocompletes groups', function(done) {
element._getSearchSuggestions('ownerin:pol').then(function(s) {
assert.equal(s[0].value, 'ownerin:Polygerrit');
done();
});
});
test('Autocompletes projects',
function(done) {
return element._getSearchSuggestions('project:pol')
.then(function(suggestions) {
assert.equal(suggestions[0].value, 'project:Polygerrit');
done();
});
test('Autocompletes projects', function(done) {
element._getSearchSuggestions('project:pol').then(function(s) {
assert.equal(s[0].value, 'project:Polygerrit');
done();
});
});
test('Autocompletes simple searches',
function(done) {
return element._getSearchSuggestions('is:o')
.then(function(suggestions) {
assert.equal(suggestions[0].name, 'is:open');
assert.equal(suggestions[0].value, 'is:open');
assert.equal(suggestions[1].name, 'is:owner');
assert.equal(suggestions[1].value, 'is:owner');
done();
});
test('Autocompletes simple searches', function(done) {
element._getSearchSuggestions('is:o').then(function(s) {
assert.equal(s[0].name, 'is:open');
assert.equal(s[0].value, 'is:open');
assert.equal(s[1].name, 'is:owner');
assert.equal(s[1].value, 'is:owner');
done();
});
});
test('Does not autocomplete with no match',
function(done) {
return element._getSearchSuggestions('asdasdasdasd')
.then(function(suggestions) {
assert.equal(suggestions.length, 0);
done();
});
test('Does not autocomplete with no match', function(done) {
element._getSearchSuggestions('asdasdasdasd').then(function(s) {
assert.equal(s.length, 0);
done();
});
});
test('Autocomplete doesnt override exact matches to input',
function(done) {
return element._getSearchSuggestions('ownerin:gerrit')
.then(function(suggestions) {
assert.equal(suggestions[0].value, 'ownerin:gerrit');
done();
});
element._getSearchSuggestions('ownerin:gerrit').then(function(s) {
assert.equal(s[0].value, 'ownerin:gerrit');
done();
});
});
test('Autocomplete respects spaces', function(done) {
element._getSearchSuggestions('is:ope').then(function(s) {
assert.equal(s[0].name, 'is:open');
assert.equal(s[0].value, 'is:open');
element._getSearchSuggestions('is:ope ').then(function(s) {
assert.equal(s.length, 0);
done();
});
});
});
});
});