From fdc949073ceabac7f573c1c1e0fcf06e4603ce11 Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Fri, 15 Apr 2016 09:24:19 +0100 Subject: [PATCH] Fixed issue with not being able to sort and filter --- app/assets/javascripts/issuable.js.coffee | 2 +- app/views/shared/_sort_dropdown.html.haml | 13 ++++++-- spec/features/issues/filter_issues_spec.rb | 35 ++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/issuable.js.coffee b/app/assets/javascripts/issuable.js.coffee index b999500d0e5..b40fa322940 100644 --- a/app/assets/javascripts/issuable.js.coffee +++ b/app/assets/javascripts/issuable.js.coffee @@ -69,7 +69,7 @@ issuable_created = false updateStateFilters: -> - stateFilters = $('.issues-state-filters') + stateFilters = $('.issues-state-filters, .dropdown-menu-sort') newParams = {} paramKeys = ['author_id', 'milestone_title', 'assignee_id', 'issue_search'] diff --git a/app/views/shared/_sort_dropdown.html.haml b/app/views/shared/_sort_dropdown.html.haml index d327bd0a96f..154d9e30851 100644 --- a/app/views/shared/_sort_dropdown.html.haml +++ b/app/views/shared/_sort_dropdown.html.haml @@ -6,26 +6,35 @@ - else = sort_title_recently_created %b.caret - %ul.dropdown-menu.dropdown-menu-align-right + %ul.dropdown-menu.dropdown-menu-align-right.dropdown-menu-sort %li = link_to page_filter_path(sort: sort_value_recently_created) do = sort_title_recently_created + %li = link_to page_filter_path(sort: sort_value_oldest_created) do = sort_title_oldest_created + %li = link_to page_filter_path(sort: sort_value_recently_updated) do = sort_title_recently_updated + %li = link_to page_filter_path(sort: sort_value_oldest_updated) do = sort_title_oldest_updated + %li = link_to page_filter_path(sort: sort_value_milestone_soon) do = sort_title_milestone_soon + %li = link_to page_filter_path(sort: sort_value_milestone_later) do = sort_title_milestone_later - - if controller.controller_name == 'issues' || controller.action_name == 'issues' + - if controller.controller_name == 'issues' || controller.action_name == 'issues' + %li = link_to page_filter_path(sort: sort_value_due_date_soon) do = sort_title_due_date_soon + %li = link_to page_filter_path(sort: sort_value_due_date_later) do = sort_title_due_date_later + %li = link_to page_filter_path(sort: sort_value_upvotes) do = sort_title_upvotes + %li = link_to page_filter_path(sort: sort_value_downvotes) do = sort_title_downvotes diff --git a/spec/features/issues/filter_issues_spec.rb b/spec/features/issues/filter_issues_spec.rb index 9f4e6e56651..c479e43b016 100644 --- a/spec/features/issues/filter_issues_spec.rb +++ b/spec/features/issues/filter_issues_spec.rb @@ -190,7 +190,9 @@ describe 'Filter issues', feature: true do expect(page).to_not have_selector('.issue') end end + end + context 'text and dropdown options', js: true do it 'should filter by text and label' do fill_in 'issue_search', with: 'Bug' @@ -260,4 +262,37 @@ describe 'Filter issues', feature: true do end end end + + describe 'filter issues and sort', js: true do + before do + label = create(:label, project: project, title: 'bug') + bug_one = create(:issue, title: "Frontend", project: project) + bug_two = create(:issue, title: "Bug 2", project: project) + + bug_one.labels << project.labels.find_by(title: 'bug') + bug_two.labels << project.labels.find_by(title: 'bug') + + visit namespace_project_issues_path(project.namespace, project) + end + + it 'should be able to filter and sort issues' do + click_button 'Label' + page.within '.labels-filter' do + click_link 'bug' + end + + page.within '.issues-list' do + expect(page).to have_selector('.issue', count: 2) + end + + click_button 'Last created' + page.within '.dropdown-menu-sort' do + click_link 'Oldest created' + end + + page.within '.issues-list' do + expect(first('.issue')).to have_content('Frontend') + end + end + end end -- GitLab