Skip to content
Snippets Groups Projects
Commit ab1b8d50 authored by Phil Hughes's avatar Phil Hughes
Browse files

Added tests

Fixed edge cases with changing value
parent 88b4ea60
No related branches found
No related tags found
No related merge requests found
Loading
@@ -62,18 +62,33 @@
Loading
@@ -62,18 +62,33 @@
   
// Get the string to replace // Get the string to replace
const selectionStart = input.selectionStart; const selectionStart = input.selectionStart;
const { left } = gl.DropdownUtils.getInputSelectionPosition(input); let { left, right } = gl.DropdownUtils.getInputSelectionPosition(input);
let { right } = gl.DropdownUtils.getInputSelectionPosition(input);
   
if (right < 0) { if (right < 0) {
right = inputValue.length; right = inputValue.length;
} }
   
if (left !== -1) { if (left < 0) {
input.value = `${inputValue.substr(0, left)}${word}${inputValue.substr(right + selectionStart)}`; left += 1;
} else {
input.value += word;
} }
input.value = `${inputValue.substr(0, left)}${word}${inputValue.substr(right + selectionStart)}`;
gl.FilteredSearchDropdownManager.updateInputCaretPosition(selectionStart, input);
}
static updateInputCaretPosition(selectionStart, input) {
// Reset the position
// Sometimes can end up at end of input
input.setSelectionRange(selectionStart, selectionStart);
const inputValue = input.value;
let { right } = gl.DropdownUtils.getInputSelectionPosition(input);
if (right < 0) {
right = inputValue.length;
}
input.setSelectionRange(selectionStart + right, selectionStart + right);
} }
   
updateCurrentDropdownOffset() { updateCurrentDropdownOffset() {
Loading
Loading
Loading
@@ -194,17 +194,12 @@
Loading
@@ -194,17 +194,12 @@
return usernamesById; return usernamesById;
} }
   
tokenChange(e) { tokenChange() {
const dropdown = this.dropdownManager.mapping[this.dropdownManager.currentDropdown]; const dropdown = this.dropdownManager.mapping[this.dropdownManager.currentDropdown];
const currentDropdownRef = dropdown.reference; const currentDropdownRef = dropdown.reference;
   
this.setDropdownWrapper(); this.setDropdownWrapper();
currentDropdownRef.dispatchInputEvent(); currentDropdownRef.dispatchInputEvent();
if (e.type === 'click') {
// If click event, we need to trigger filter
this.filteredSearchInput.dispatchEvent(new Event('keyup'));
}
} }
} }
   
Loading
Loading
Loading
@@ -19,9 +19,12 @@ describe 'Filter issues', js: true, feature: true do
Loading
@@ -19,9 +19,12 @@ describe 'Filter issues', js: true, feature: true do
let!(:closed_issue) { create(:issue, title: 'bug that is closed', project: project, state: :closed) } let!(:closed_issue) { create(:issue, title: 'bug that is closed', project: project, state: :closed) }
let(:filtered_search) { find('.filtered-search') } let(:filtered_search) { find('.filtered-search') }
   
def input_filtered_search(search_term) def input_filtered_search(search_term, submit: true)
filtered_search.set(search_term) filtered_search.set(search_term)
filtered_search.send_keys(:enter)
if submit
filtered_search.send_keys(:enter)
end
end end
   
def expect_filtered_search_input(input) def expect_filtered_search_input(input)
Loading
@@ -43,6 +46,10 @@ describe 'Filter issues', js: true, feature: true do
Loading
@@ -43,6 +46,10 @@ describe 'Filter issues', js: true, feature: true do
end end
end end
   
def select_search_at_index(pos)
evaluate_script("el = document.querySelector('.filtered-search'); el.focus(); el.setSelectionRange(#{pos}, #{pos});")
end
before do before do
project.team << [user, :master] project.team << [user, :master]
project.team << [user2, :master] project.team << [user2, :master]
Loading
@@ -522,6 +529,32 @@ describe 'Filter issues', js: true, feature: true do
Loading
@@ -522,6 +529,32 @@ describe 'Filter issues', js: true, feature: true do
end end
end end
   
describe 'overwrites selected filter' do
it 'changes author' do
input_filtered_search("author:@#{user.username}", submit: false)
select_search_at_index(3)
page.within '#js-dropdown-author' do
click_button user2.username
end
expect(filtered_search.value).to eq("author:@#{user2.username}")
end
it 'changes label' do
input_filtered_search("author:@#{user.username} label:~#{bug_label.title}", submit: false)
select_search_at_index(27)
page.within '#js-dropdown-label' do
click_button label.name
end
expect(filtered_search.value).to eq("author:@#{user.username} label:~#{label.name}")
end
end
describe 'filter issues by text' do describe 'filter issues by text' do
context 'only text' do context 'only text' do
it 'filters issues by searched text' do it 'filters issues by searched text' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment