diff options
author | Fatih Acet <acetfatih@gmail.com> | 2016-10-17 20:29:35 +0300 |
---|---|---|
committer | Fatih Acet <acetfatih@gmail.com> | 2016-10-17 20:29:35 +0300 |
commit | 11485c5acc9247e417838879a31af014972b999c (patch) | |
tree | 919addc5d03e1bf20e474f4686c2e2dc7c473f99 | |
parent | b2251810fef71fe5de8432333aef35321592eea6 (diff) | |
parent | f91df171c53f230937b538ffdec04d12f7726ffc (diff) |
Merge branch 'find-file-enter-fix' into 'master'
Fixed find file keyboard navigation
## What does this MR do?
The code to view a file on find file page was removed, this adds that back in & adds some tests.
## What are the relevant issue numbers?
Closes #23423
See merge request !6944
-rw-r--r-- | app/assets/javascripts/project_find_file.js | 9 | ||||
-rw-r--r-- | spec/features/projects/files/find_file_keyboard_spec.rb | 42 |
2 files changed, 51 insertions, 0 deletions
diff --git a/app/assets/javascripts/project_find_file.js b/app/assets/javascripts/project_find_file.js index 8e38ccf7e44..b8347367717 100644 --- a/app/assets/javascripts/project_find_file.js +++ b/app/assets/javascripts/project_find_file.js @@ -7,6 +7,7 @@ function ProjectFindFile(element1, options) { this.element = element1; this.options = options; + this.goToBlob = bind(this.goToBlob, this); this.goToTree = bind(this.goToTree, this); this.selectRowDown = bind(this.selectRowDown, this); this.selectRowUp = bind(this.selectRowUp, this); @@ -154,6 +155,14 @@ return location.href = this.options.treeUrl; }; + ProjectFindFile.prototype.goToBlob = function() { + var $link = this.element.find(".tree-item.selected .tree-item-file-name a"); + + if ($link.length) { + $link.get(0).click(); + } + }; + return ProjectFindFile; })(); diff --git a/spec/features/projects/files/find_file_keyboard_spec.rb b/spec/features/projects/files/find_file_keyboard_spec.rb new file mode 100644 index 00000000000..fc88fd74af8 --- /dev/null +++ b/spec/features/projects/files/find_file_keyboard_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +feature 'Find file keyboard shortcuts', feature: true, js: true do + include WaitForAjax + + let(:user) { create(:user) } + let(:project) { create(:project) } + + before do + project.team << [user, :master] + login_as user + + visit namespace_project_find_file_path(project.namespace, project, project.repository.root_ref) + + wait_for_ajax + end + + it 'opens file when pressing enter key' do + fill_in 'file_find', with: 'CHANGELOG' + + find('#file_find').native.send_keys(:enter) + + expect(page).to have_selector('.blob-content-holder') + + page.within('.file-title') do + expect(page).to have_content('CHANGELOG') + end + end + + it 'navigates files with arrow keys' do + fill_in 'file_find', with: 'application.' + + find('#file_find').native.send_keys(:down) + find('#file_find').native.send_keys(:enter) + + expect(page).to have_selector('.blob-content-holder') + + page.within('.file-title') do + expect(page).to have_content('application.js') + end + end +end |