summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement Ho <ClemMakesApps@gmail.com>2016-12-17 19:55:44 -0600
committerClement Ho <ClemMakesApps@gmail.com>2017-01-09 16:01:34 -0600
commitf72c1bf1c930b4dcb533202204d132f42246d99f (patch)
treedace0e643da0794dd2c7982b3429e2bc12413170
parente197f27f19ab7995d280f67754ea16c2629701b2 (diff)
downloadgitlab-ce-f72c1bf1c930b4dcb533202204d132f42246d99f.tar.gz
Fix specs
-rw-r--r--app/assets/javascripts/filtered_search/dropdown_utils.js.es613
-rw-r--r--app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es615
-rw-r--r--spec/features/issues/filtered_search/dropdown_assignee_spec.rb6
-rw-r--r--spec/features/issues/filtered_search/dropdown_author_spec.rb8
-rw-r--r--spec/features/issues/filtered_search/dropdown_label_spec.rb2
-rw-r--r--spec/features/issues/filtered_search/filter_issues_spec.rb2
6 files changed, 30 insertions, 16 deletions
diff --git a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6 b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
index d246000ff52..0c0d24d4de8 100644
--- a/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
+++ b/app/assets/javascripts/filtered_search/dropdown_utils.js.es6
@@ -42,12 +42,17 @@
static filterHint(item, query) {
const updatedItem = item;
- const { lastToken } = gl.FilteredSearchTokenizer.processTokens(query);
+ let { lastToken } = gl.FilteredSearchTokenizer.processTokens(query);
+ lastToken = lastToken || '';
- if (!lastToken) {
+ if (!lastToken || query.split('').last() === ' ') {
updatedItem.droplab_hidden = false;
- } else {
- updatedItem.droplab_hidden = updatedItem.hint.indexOf(lastToken.toLowerCase()) === -1;
+ } else if (lastToken) {
+ const split = lastToken.split(':');
+ const tokenName = split[0].split(' ').last();
+
+ const match = updatedItem.hint.indexOf(tokenName.toLowerCase()) === -1;
+ updatedItem.droplab_hidden = tokenName ? match : false;
}
return updatedItem;
diff --git a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6 b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6
index b67176267fb..e9f1fbf63ed 100644
--- a/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6
+++ b/app/assets/javascripts/filtered_search/filtered_search_dropdown_manager.js.es6
@@ -62,6 +62,7 @@
const value = input.value;
const hasExistingValue = value.length !== 0;
const { lastToken, searchToken } = gl.FilteredSearchTokenizer.processTokens(value);
+ const lastSearchToken = searchToken.split(' ').last();
// Find out what part of the token value the user has typed
// and remove it from input before appending the selected token value
@@ -74,8 +75,8 @@
// Add 2 length to account for the length of the front and back quotes
const lengthToRemove = hasQuotes ? lastTokenString.length + 2 : lastTokenString.length;
input.value = value.slice(0, -1 * (lengthToRemove));
- } else if (searchToken !== '' && word.indexOf(searchToken) !== -1) {
- input.value = value.slice(0, -1 * searchToken.length);
+ } else if (searchToken !== '' && word.indexOf(lastSearchToken) !== -1) {
+ input.value = value.slice(0, -1 * lastSearchToken.length);
}
input.value += hasExistingValue && addSpace ? ` ${word}` : word;
@@ -150,11 +151,17 @@
const { lastToken, searchToken } = this.tokenizer
.processTokens(this.filteredSearchInput.value);
- if (lastToken === searchToken) {
+ if (this.filteredSearchInput.value.split('').last() === ' ') {
+ this.updateCurrentDropdownOffset();
+ }
+
+ if (lastToken === searchToken && lastToken !== null) {
// Token is not fully initialized yet because it has no value
// Eg. token = 'label:'
+
const split = lastToken.split(':');
- this.loadDropdown(split.length > 1 ? split[0] : '');
+ const dropdownName = split[0].split(' ').last();
+ this.loadDropdown(split.length > 1 ? dropdownName : '');
} else if (lastToken) {
// Token has been initialized into an object because it has a value
this.loadDropdown(lastToken.key);
diff --git a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
index 5d0e95580c9..a5a05a622b6 100644
--- a/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_assignee_spec.rb
@@ -13,7 +13,7 @@ describe 'Dropdown assignee', js: true, feature: true do
def send_keys_to_filtered_search(input)
input.split("").each do |i|
filtered_search.send_keys(i)
- sleep 3
+ sleep 5
wait_for_ajax
end
end
@@ -65,7 +65,7 @@ describe 'Dropdown assignee', js: true, feature: true do
describe 'filtering' do
before do
- filtered_search.set('assignee:')
+ send_keys_to_filtered_search('assignee:')
end
it 'filters by name' do
@@ -118,7 +118,7 @@ describe 'Dropdown assignee', js: true, feature: true do
end
it 'selects `no assignee`' do
- click_assignee('No Assignee')
+ find('#js-dropdown-assignee .filter-dropdown-item', text: 'No Assignee').click
expect(page).to have_css(js_dropdown_assignee, visible: false)
expect(filtered_search.value).to eq("assignee:none")
end
diff --git a/spec/features/issues/filtered_search/dropdown_author_spec.rb b/spec/features/issues/filtered_search/dropdown_author_spec.rb
index c7cb5e25174..956f7156c5f 100644
--- a/spec/features/issues/filtered_search/dropdown_author_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_author_spec.rb
@@ -13,7 +13,7 @@ describe 'Dropdown author', js: true, feature: true do
def send_keys_to_filtered_search(input)
input.split("").each do |i|
filtered_search.send_keys(i)
- sleep 3
+ sleep 5
wait_for_ajax
end
end
@@ -65,7 +65,8 @@ describe 'Dropdown author', js: true, feature: true do
describe 'filtering' do
before do
- filtered_search.set('author:')
+ filtered_search.set('author')
+ send_keys_to_filtered_search(':')
end
it 'filters by name' do
@@ -101,7 +102,8 @@ describe 'Dropdown author', js: true, feature: true do
describe 'selecting from dropdown' do
before do
- filtered_search.set('author:')
+ filtered_search.set('author')
+ send_keys_to_filtered_search(':')
end
it 'fills in the author username when the author has not been filtered' do
diff --git a/spec/features/issues/filtered_search/dropdown_label_spec.rb b/spec/features/issues/filtered_search/dropdown_label_spec.rb
index d007e160b3e..a0e2973d6b8 100644
--- a/spec/features/issues/filtered_search/dropdown_label_spec.rb
+++ b/spec/features/issues/filtered_search/dropdown_label_spec.rb
@@ -176,7 +176,7 @@ describe 'Dropdown label', js: true, feature: true do
end
it 'selects `no label`' do
- click_label('No Label')
+ find('#js-dropdown-label .filter-dropdown-item', text: 'No Label').click
expect(page).to have_css(js_dropdown_label, visible: false)
expect(filtered_search.value).to eq("label:none")
end
diff --git a/spec/features/issues/filtered_search/filter_issues_spec.rb b/spec/features/issues/filtered_search/filter_issues_spec.rb
index e72417aea80..ed6d4a0787a 100644
--- a/spec/features/issues/filtered_search/filter_issues_spec.rb
+++ b/spec/features/issues/filtered_search/filter_issues_spec.rb
@@ -17,9 +17,9 @@ describe 'Filter issues', js: true, feature: true do
let!(:multiple_words_label) { create(:label, project: project, title: "Two words") }
let!(:closed_issue) { create(:issue, title: 'bug that is closed', project: project, state: :closed) }
+ let(:filtered_search) { find('.filtered-search') }
def input_filtered_search(search_term)
- filtered_search = find('.filtered-search')
filtered_search.set(search_term)
filtered_search.send_keys(:enter)
end