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

View File

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