From 305f4031a48535aca4229de0c5945b247a608c07 Mon Sep 17 00:00:00 2001 From: Ezekiel Kigbo Date: Mon, 17 Jun 2019 12:08:10 +1000 Subject: Added tests for current behaviour --- app/helpers/sorting_helper.rb | 15 ++--- spec/helpers/sorting_helper_spec.rb | 114 ++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 10 deletions(-) diff --git a/app/helpers/sorting_helper.rb b/app/helpers/sorting_helper.rb index 26692934456..ad0d74d7a19 100644 --- a/app/helpers/sorting_helper.rb +++ b/app/helpers/sorting_helper.rb @@ -38,14 +38,12 @@ module SortingHelper # https://gitlab.com/gitlab-org/gitlab-ce/issues/60798 # https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/11209#note_162234858 def old_projects_sort_options_hash - options = { - sort_value_latest_activity => sort_title_latest_activity, - sort_value_name => sort_title_name, + options = projects_sort_common_options_hash.merge({ sort_value_oldest_activity => sort_title_oldest_activity, sort_value_oldest_created => sort_title_oldest_created, sort_value_recently_created => sort_title_recently_created, sort_value_stars_desc => sort_title_most_stars - } + }) if current_controller?('admin/projects') options[sort_value_largest_repo] = sort_title_largest_repo @@ -64,16 +62,12 @@ module SortingHelper end def projects_sort_option_titles - { - sort_value_latest_activity => sort_title_latest_activity, - sort_value_recently_created => sort_title_created_date, - sort_value_name => sort_title_name, - sort_value_stars_desc => sort_title_stars, + projects_sort_common_options_hash.merge({ sort_value_oldest_activity => sort_title_latest_activity, sort_value_oldest_created => sort_title_created_date, sort_value_name_desc => sort_title_name, sort_value_stars_asc => sort_title_stars - } + }) end def projects_reverse_sort_options_hash @@ -237,6 +231,7 @@ module SortingHelper end end + # TODO: dedupicate issuable and project sort direction def project_sort_direction_button(sort_value) link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort' reverse_sort = projects_reverse_sort_options_hash[sort_value] diff --git a/spec/helpers/sorting_helper_spec.rb b/spec/helpers/sorting_helper_spec.rb index f405268d198..8184b6c3a08 100644 --- a/spec/helpers/sorting_helper_spec.rb +++ b/spec/helpers/sorting_helper_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' describe SortingHelper do include ApplicationHelper include IconsHelper + include ExploreHelper describe '#issuable_sort_option_title' do it 'returns correct title for issuable_sort_option_overrides key' do @@ -44,4 +45,117 @@ describe SortingHelper do expect(issuable_sort_direction_button('due_date')).to include('sort-lowest') end end + + # TODO: need separate tests for /admin/projects and /projects + # TODO: should this be renamed to `projects_sort_option_title??` ... maybe not + def stub_controller_path(value) + allow(helper.controller).to receive(:controller_path).and_return(value) + end + + def project_common_options() + { + sort_value_latest_activity => sort_title_latest_activity, + sort_value_recently_created => sort_title_created_date, + sort_value_name => sort_title_name, + sort_value_stars_desc => sort_title_stars + } + end + + def admin_additional_project_options() + { + sort_value_recently_created => sort_title_recently_created, + sort_value_largest_repo => sort_title_largest_repo, + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, + sort_value_stars_desc => sort_title_most_stars + } + end + + describe 'with `admin/projects` controller', :focus do + before do + stub_controller_path('admin/projects') + end + + describe '#projects_sort_options_hash' do + it 'returns a hash of available sorting options' do + hash = projects_sort_options_hash + + admin_options = project_common_options.merge(admin_additional_project_options) + expect(hash).to eq(admin_options) + end + end + end + + describe 'with `projects` controller', :focus do + before do + stub_controller_path('projects') + end + + describe '#projects_sort_options_hash' do + it 'returns a hash of available sorting options' do + hash = projects_sort_options_hash + + common_options = project_common_options + admin_options = admin_additional_project_options + common_with_different_values = [sort_value_recently_created, sort_value_stars_desc] + + common_options.each do |key, opt| + expect(hash).to include(key) + expect(hash[key]).to eq(opt) + end + + admin_options.each do |key, opt| + if common_with_different_values.include?(key) + expect(hash[key]).not_to eq(opt) + else + expect(hash).not_to include(key) + end + end + end + end + + describe '#projects_reverse_sort_options_hash' do + it 'returns a reversed hash of available sorting options' do + reverse_hash = projects_reverse_sort_options_hash + + options = { + sort_value_latest_activity => sort_value_oldest_activity, + sort_value_recently_created => sort_value_oldest_created, + sort_value_name => sort_value_name_desc, + sort_value_stars_desc => sort_value_stars_asc, + sort_value_oldest_activity => sort_value_latest_activity, + sort_value_oldest_created => sort_value_recently_created, + sort_value_name_desc => sort_value_name, + sort_value_stars_asc => sort_value_stars_desc + } + + options.each do |key, opt| + expect(reverse_hash).to include(key) + expect(reverse_hash[key]).to eq(opt) + end + end + end + end + + describe '#project_sort_direction_button', :focus do + before do + allow(self).to receive(:request).and_return(double(path: 'http://test.com', query_parameters: { label_name: 'test_label' })) + end + + it 'returns icon with sort-highest when sort is created_date' do + expect(project_sort_direction_button('created_date')).to include('sort-highest') + end + + it 'returns icon with sort-lowest when sort is asc' do + expect(project_sort_direction_button('created_asc')).to include('sort-lowest') + end + + it 'returns icon with sort-lowest when sorting by milestone' do + expect(project_sort_direction_button('milestone')).to include('sort-lowest') + end + + it 'returns icon with sort-lowest when sorting by due_date' do + expect(project_sort_direction_button('due_date')).to include('sort-lowest') + end + end end -- cgit v1.2.1 From af0e2e377f03e2cb6c8e5db543975739c412c1f6 Mon Sep 17 00:00:00 2001 From: Ezekiel Kigbo Date: Mon, 8 Jul 2019 16:33:42 +1000 Subject: Added test for admin/projects Added tests with project_list_filter_bar set to off Added tests for projects_sort_option_titles Refactor project sort options hash --- app/helpers/sorting_helper.rb | 40 +++++----- spec/helpers/sorting_helper_spec.rb | 150 ++++++++++++++++++++++++++---------- 2 files changed, 129 insertions(+), 61 deletions(-) diff --git a/app/helpers/sorting_helper.rb b/app/helpers/sorting_helper.rb index ad0d74d7a19..10ab6123467 100644 --- a/app/helpers/sorting_helper.rb +++ b/app/helpers/sorting_helper.rb @@ -31,19 +31,23 @@ module SortingHelper end def projects_sort_options_hash - Feature.enabled?(:project_list_filter_bar) && !current_controller?('admin/projects') ? projects_sort_common_options_hash : old_projects_sort_options_hash - end + use_old_sorting = !Feature.enabled?(:project_list_filter_bar) || current_controller?('admin/projects') - # TODO: Simplify these sorting options - # https://gitlab.com/gitlab-org/gitlab-ce/issues/60798 - # https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/11209#note_162234858 - def old_projects_sort_options_hash - options = projects_sort_common_options_hash.merge({ - sort_value_oldest_activity => sort_title_oldest_activity, - sort_value_oldest_created => sort_title_oldest_created, - sort_value_recently_created => sort_title_recently_created, - sort_value_stars_desc => sort_title_most_stars - }) + options = { + sort_value_latest_activity => sort_title_latest_activity, + sort_value_recently_created => sort_title_created_date, + sort_value_name => sort_title_name, + sort_value_stars_desc => sort_title_stars + } + + if use_old_sorting + options = options.merge({ + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, + sort_value_recently_created => sort_title_recently_created, + sort_value_stars_desc => sort_title_most_stars + }) + end if current_controller?('admin/projects') options[sort_value_largest_repo] = sort_title_largest_repo @@ -52,17 +56,9 @@ module SortingHelper options end - def projects_sort_common_options_hash - { - sort_value_latest_activity => sort_title_latest_activity, - sort_value_recently_created => sort_title_created_date, - sort_value_name => sort_title_name, - sort_value_stars_desc => sort_title_stars - } - end - def projects_sort_option_titles - projects_sort_common_options_hash.merge({ + # Only used for the project filter search bar + projects_sort_options_hash.merge({ sort_value_oldest_activity => sort_title_latest_activity, sort_value_oldest_created => sort_title_created_date, sort_value_name_desc => sort_title_name, diff --git a/spec/helpers/sorting_helper_spec.rb b/spec/helpers/sorting_helper_spec.rb index 8184b6c3a08..93e7c2c5840 100644 --- a/spec/helpers/sorting_helper_spec.rb +++ b/spec/helpers/sorting_helper_spec.rb @@ -52,26 +52,16 @@ describe SortingHelper do allow(helper.controller).to receive(:controller_path).and_return(value) end - def project_common_options() + def project_common_options { sort_value_latest_activity => sort_title_latest_activity, sort_value_recently_created => sort_title_created_date, sort_value_name => sort_title_name, sort_value_stars_desc => sort_title_stars - } - end - - def admin_additional_project_options() - { - sort_value_recently_created => sort_title_recently_created, - sort_value_largest_repo => sort_title_largest_repo, - sort_value_oldest_activity => sort_title_oldest_activity, - sort_value_oldest_created => sort_title_oldest_created, - sort_value_stars_desc => sort_title_most_stars } end - describe 'with `admin/projects` controller', :focus do + describe 'with `admin/projects` controller' do before do stub_controller_path('admin/projects') end @@ -80,13 +70,19 @@ describe SortingHelper do it 'returns a hash of available sorting options' do hash = projects_sort_options_hash - admin_options = project_common_options.merge(admin_additional_project_options) + admin_options = project_common_options.merge( { + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, + sort_value_recently_created => sort_title_recently_created, + sort_value_stars_desc => sort_title_most_stars, + sort_value_largest_repo => sort_title_largest_repo + }) expect(hash).to eq(admin_options) end end end - describe 'with `projects` controller', :focus do + describe 'with `projects` controller' do before do stub_controller_path('projects') end @@ -94,23 +90,12 @@ describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do hash = projects_sort_options_hash - common_options = project_common_options - admin_options = admin_additional_project_options - common_with_different_values = [sort_value_recently_created, sort_value_stars_desc] common_options.each do |key, opt| expect(hash).to include(key) expect(hash[key]).to eq(opt) end - - admin_options.each do |key, opt| - if common_with_different_values.include?(key) - expect(hash[key]).not_to eq(opt) - else - expect(hash).not_to include(key) - end - end end end @@ -135,27 +120,114 @@ describe SortingHelper do end end end - end - describe '#project_sort_direction_button', :focus do - before do - allow(self).to receive(:request).and_return(double(path: 'http://test.com', query_parameters: { label_name: 'test_label' })) - end + describe '#project_sort_direction_button' do + # TODO: add more of these + # TODO: Not too sure about these + # Take a look at the ui and just go with that + # it 'returns icon with sort-highest when sort is created_date' do + # expect(project_sort_direction_button('created_date')).to include('sort-highest') + # end - it 'returns icon with sort-highest when sort is created_date' do - expect(project_sort_direction_button('created_date')).to include('sort-highest') - end + # it 'returns icon with sort-lowest when sort is asc' do + # expect(project_sort_direction_button('created_asc')).to include('sort-lowest') + # end - it 'returns icon with sort-lowest when sort is asc' do - expect(project_sort_direction_button('created_asc')).to include('sort-lowest') + # it 'returns icon with sort-lowest when sorting by milestone' do + # expect(project_sort_direction_button('milestone')).to include('sort-lowest') + # end + + # it 'returns icon with sort-lowest when sorting by due_date' do + # expect(project_sort_direction_button('due_date')).to include('sort-lowest') + # end end - it 'returns icon with sort-lowest when sorting by milestone' do - expect(project_sort_direction_button('milestone')).to include('sort-lowest') + describe '#projects_sort_option_titles' do + it 'returns a hash of titles for the sorting options' do + titles = projects_sort_option_titles + + options = { + sort_value_latest_activity => sort_title_latest_activity, + sort_value_recently_created => sort_title_created_date, + sort_value_name => sort_title_name, + sort_value_stars_desc => sort_title_stars, + sort_value_oldest_activity => sort_title_latest_activity, + sort_value_oldest_created => sort_title_created_date, + sort_value_name_desc => sort_title_name, + sort_value_stars_asc => sort_title_stars + } + + expect(titles.length).to eq(options.length) + + titles.each do |key, opt| + expect(options).to include(key) + expect(options[key]).to eq(opt) + end + end end - it 'returns icon with sort-lowest when sorting by due_date' do - expect(project_sort_direction_button('due_date')).to include('sort-lowest') + describe 'with project_list_filter_bar off' do + before do + stub_feature_flags(project_list_filter_bar: false) + end + + describe '#projects_sort_options_hash' do + it 'returns a hash of available sorting options' do + hash = projects_sort_options_hash + options = project_common_options.merge({ + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, + sort_value_recently_created => sort_title_recently_created, + sort_value_stars_desc => sort_title_most_stars + }) + + options.each do |key, opt| + expect(hash).to include(key) + expect(hash[key]).to eq(opt) + end + end + end + + describe '#projects_reverse_sort_options_hash' do + it 'returns a reversed hash of available sorting options' do + reverse_hash = projects_reverse_sort_options_hash + + options = { + sort_value_latest_activity => sort_value_oldest_activity, + sort_value_recently_created => sort_value_oldest_created, + sort_value_name => sort_value_name_desc, + sort_value_stars_desc => sort_value_stars_asc, + sort_value_oldest_activity => sort_value_latest_activity, + sort_value_oldest_created => sort_value_recently_created, + sort_value_name_desc => sort_value_name, + sort_value_stars_asc => sort_value_stars_desc + } + + options.each do |key, opt| + expect(reverse_hash).to include(key) + expect(reverse_hash[key]).to eq(opt) + end + end + end + + describe '#project_sort_direction_button' do + # TODO: these don't look correct + # it 'returns icon with sort-highest when sort is created_date' do + # expect(project_sort_direction_button('created_date')).to include('sort-highest') + # end + + # it 'returns icon with sort-lowest when sort is asc' do + # expect(project_sort_direction_button('created_asc')).to include('sort-lowest') + # end + + # it 'returns icon with sort-lowest when sorting by milestone' do + # expect(project_sort_direction_button('milestone')).to include('sort-lowest') + # end + + # it 'returns icon with sort-lowest when sorting by due_date' do + # expect(project_sort_direction_button('due_date')).to include('sort-lowest') + # end + end end end end -- cgit v1.2.1 From b054a96182ebae41ca4f934a822014c62b91385f Mon Sep 17 00:00:00 2001 From: Ezekiel Kigbo Date: Tue, 9 Jul 2019 10:33:30 +1000 Subject: Added tests for sort icon current Refactor sort direction icon --- app/helpers/sorting_helper.rb | 46 ++++++++--------- spec/helpers/sorting_helper_spec.rb | 100 +++++++++++++----------------------- 2 files changed, 57 insertions(+), 89 deletions(-) diff --git a/app/helpers/sorting_helper.rb b/app/helpers/sorting_helper.rb index 10ab6123467..e4d2bd91cc4 100644 --- a/app/helpers/sorting_helper.rb +++ b/app/helpers/sorting_helper.rb @@ -31,7 +31,7 @@ module SortingHelper end def projects_sort_options_hash - use_old_sorting = !Feature.enabled?(:project_list_filter_bar) || current_controller?('admin/projects') + use_old_sorting = !Feature.enabled?(:project_list_filter_bar) || current_controller?('admin/projects') options = { sort_value_latest_activity => sort_title_latest_activity, @@ -200,48 +200,42 @@ module SortingHelper sort_options_hash[sort_value] end - def issuable_sort_icon_suffix(sort_value) + def sort_direction_icon(sort_value) case sort_value when sort_value_milestone, sort_value_due_date, /_asc\z/ - 'lowest' + 'sort-lowest' else - 'highest' + 'sort-highest' end end - # TODO: dedupicate issuable and project sort direction - # https://gitlab.com/gitlab-org/gitlab-ce/issues/60798 - def issuable_sort_direction_button(sort_value) + def sort_direction_button(reverse_url, reverse_sort, sort_value) link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort' - reverse_sort = issuable_reverse_sort_order_hash[sort_value] + icon = sort_direction_icon(sort_value) + url = reverse_url - if reverse_sort - reverse_url = page_filter_path(sort: reverse_sort) - else - reverse_url = '#' + unless reverse_sort + url = '#' link_class += ' disabled' end - link_to(reverse_url, type: 'button', class: link_class, title: s_('SortOptions|Sort direction')) do - sprite_icon("sort-#{issuable_sort_icon_suffix(sort_value)}", size: 16) + link_to(url, type: 'button', class: link_class, title: s_('SortOptions|Sort direction')) do + sprite_icon(icon, size: 16) end end - # TODO: dedupicate issuable and project sort direction + def issuable_sort_direction_button(sort_value) + reverse_sort = issuable_reverse_sort_order_hash[sort_value] + url = page_filter_path(sort: reverse_sort) + + sort_direction_button(url, reverse_sort, sort_value) + end + def project_sort_direction_button(sort_value) - link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort' reverse_sort = projects_reverse_sort_options_hash[sort_value] + url = filter_projects_path(sort: reverse_sort) - if reverse_sort - reverse_url = filter_projects_path(sort: reverse_sort) - else - reverse_url = '#' - link_class += ' disabled' - end - - link_to(reverse_url, type: 'button', class: link_class, title: s_('SortOptions|Sort direction')) do - sprite_icon("sort-#{issuable_sort_icon_suffix(sort_value)}", size: 16) - end + sort_direction_button(url, reverse_sort, sort_value) end # Titles. diff --git a/spec/helpers/sorting_helper_spec.rb b/spec/helpers/sorting_helper_spec.rb index 93e7c2c5840..0a31b8ad8d6 100644 --- a/spec/helpers/sorting_helper_spec.rb +++ b/spec/helpers/sorting_helper_spec.rb @@ -6,6 +6,10 @@ describe SortingHelper do include IconsHelper include ExploreHelper + def set_sorting_url(option) + allow(self).to receive(:request).and_return(double(path: 'http://test.com', query_parameters: { label_name: option })) + end + describe '#issuable_sort_option_title' do it 'returns correct title for issuable_sort_option_overrides key' do expect(issuable_sort_option_title('created_asc')).to eq('Created date') @@ -22,7 +26,7 @@ describe SortingHelper do describe '#issuable_sort_direction_button' do before do - allow(self).to receive(:request).and_return(double(path: 'http://test.com', query_parameters: { label_name: 'test_label' })) + set_sorting_url 'test_label' end it 'keeps label filter param' do @@ -46,8 +50,6 @@ describe SortingHelper do end end - # TODO: need separate tests for /admin/projects and /projects - # TODO: should this be renamed to `projects_sort_option_title??` ... maybe not def stub_controller_path(value) allow(helper.controller).to receive(:controller_path).and_return(value) end @@ -63,14 +65,14 @@ describe SortingHelper do describe 'with `admin/projects` controller' do before do - stub_controller_path('admin/projects') + stub_controller_path 'admin/projects' end describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do hash = projects_sort_options_hash - admin_options = project_common_options.merge( { + admin_options = project_common_options.merge({ sort_value_oldest_activity => sort_title_oldest_activity, sort_value_oldest_created => sort_title_oldest_created, sort_value_recently_created => sort_title_recently_created, @@ -84,7 +86,7 @@ describe SortingHelper do describe 'with `projects` controller' do before do - stub_controller_path('projects') + stub_controller_path 'projects' end describe '#projects_sort_options_hash' do @@ -99,7 +101,7 @@ describe SortingHelper do end end - describe '#projects_reverse_sort_options_hash' do + describe '#projects_reverse_sort_options_hash' do it 'returns a reversed hash of available sorting options' do reverse_hash = projects_reverse_sort_options_hash @@ -122,24 +124,37 @@ describe SortingHelper do end describe '#project_sort_direction_button' do - # TODO: add more of these - # TODO: Not too sure about these - # Take a look at the ui and just go with that - # it 'returns icon with sort-highest when sort is created_date' do - # expect(project_sort_direction_button('created_date')).to include('sort-highest') - # end + it 'returns the correct icon for each sort option' do + sort_lowest_icon = 'sort-lowest' + sort_highest_icon = 'sort-highest' + + sort_options_icons = { + sort_value_latest_activity => sort_highest_icon, + sort_value_recently_created => sort_highest_icon, + sort_value_name_desc => sort_highest_icon, + sort_value_stars_desc => sort_highest_icon, + sort_value_oldest_activity => sort_lowest_icon, + sort_value_oldest_created => sort_lowest_icon, + sort_value_name => sort_lowest_icon, + sort_value_stars_asc => sort_lowest_icon + } + + sort_options_icons.each do |selected_sort, icon| + set_sorting_url selected_sort + + expect(project_sort_direction_button(selected_sort)).to include(icon) + end + end - # it 'returns icon with sort-lowest when sort is asc' do - # expect(project_sort_direction_button('created_asc')).to include('sort-lowest') - # end + it 'returns the correct link to reverse the current sort option' do + sort_options_links = projects_reverse_sort_options_hash - # it 'returns icon with sort-lowest when sorting by milestone' do - # expect(project_sort_direction_button('milestone')).to include('sort-lowest') - # end + sort_options_links.each do |selected_sort, reverse_sort| + set_sorting_url selected_sort - # it 'returns icon with sort-lowest when sorting by due_date' do - # expect(project_sort_direction_button('due_date')).to include('sort-lowest') - # end + expect(project_sort_direction_button(selected_sort)).to include(reverse_sort) + end + end end describe '#projects_sort_option_titles' do @@ -187,47 +202,6 @@ describe SortingHelper do end end end - - describe '#projects_reverse_sort_options_hash' do - it 'returns a reversed hash of available sorting options' do - reverse_hash = projects_reverse_sort_options_hash - - options = { - sort_value_latest_activity => sort_value_oldest_activity, - sort_value_recently_created => sort_value_oldest_created, - sort_value_name => sort_value_name_desc, - sort_value_stars_desc => sort_value_stars_asc, - sort_value_oldest_activity => sort_value_latest_activity, - sort_value_oldest_created => sort_value_recently_created, - sort_value_name_desc => sort_value_name, - sort_value_stars_asc => sort_value_stars_desc - } - - options.each do |key, opt| - expect(reverse_hash).to include(key) - expect(reverse_hash[key]).to eq(opt) - end - end - end - - describe '#project_sort_direction_button' do - # TODO: these don't look correct - # it 'returns icon with sort-highest when sort is created_date' do - # expect(project_sort_direction_button('created_date')).to include('sort-highest') - # end - - # it 'returns icon with sort-lowest when sort is asc' do - # expect(project_sort_direction_button('created_asc')).to include('sort-lowest') - # end - - # it 'returns icon with sort-lowest when sorting by milestone' do - # expect(project_sort_direction_button('milestone')).to include('sort-lowest') - # end - - # it 'returns icon with sort-lowest when sorting by due_date' do - # expect(project_sort_direction_button('due_date')).to include('sort-lowest') - # end - end end end end -- cgit v1.2.1 From f271162880a898c4fde8ba2dfb15f5417b650a5d Mon Sep 17 00:00:00 2001 From: Ezekiel Kigbo Date: Tue, 9 Jul 2019 21:31:57 +1000 Subject: Minor review cleanup Minor refactor specs --- app/helpers/sorting_helper.rb | 2 +- spec/helpers/sorting_helper_spec.rb | 108 ++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 62 deletions(-) diff --git a/app/helpers/sorting_helper.rb b/app/helpers/sorting_helper.rb index e4d2bd91cc4..d5e5b472115 100644 --- a/app/helpers/sorting_helper.rb +++ b/app/helpers/sorting_helper.rb @@ -31,7 +31,7 @@ module SortingHelper end def projects_sort_options_hash - use_old_sorting = !Feature.enabled?(:project_list_filter_bar) || current_controller?('admin/projects') + use_old_sorting = Feature.disabled?(:project_list_filter_bar) || current_controller?('admin/projects') options = { sort_value_latest_activity => sort_title_latest_activity, diff --git a/spec/helpers/sorting_helper_spec.rb b/spec/helpers/sorting_helper_spec.rb index 0a31b8ad8d6..5397a47b3dd 100644 --- a/spec/helpers/sorting_helper_spec.rb +++ b/spec/helpers/sorting_helper_spec.rb @@ -70,8 +70,6 @@ describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do - hash = projects_sort_options_hash - admin_options = project_common_options.merge({ sort_value_oldest_activity => sort_title_oldest_activity, sort_value_oldest_created => sort_title_oldest_created, @@ -79,7 +77,8 @@ describe SortingHelper do sort_value_stars_desc => sort_title_most_stars, sort_value_largest_repo => sort_title_largest_repo }) - expect(hash).to eq(admin_options) + + expect(projects_sort_options_hash).to eq(admin_options) end end end @@ -91,58 +90,60 @@ describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do - hash = projects_sort_options_hash - common_options = project_common_options - - common_options.each do |key, opt| - expect(hash).to include(key) - expect(hash[key]).to eq(opt) - end + expect(projects_sort_options_hash).to include(project_common_options) end end describe '#projects_reverse_sort_options_hash' do - it 'returns a reversed hash of available sorting options' do - reverse_hash = projects_reverse_sort_options_hash - - options = { - sort_value_latest_activity => sort_value_oldest_activity, - sort_value_recently_created => sort_value_oldest_created, - sort_value_name => sort_value_name_desc, - sort_value_stars_desc => sort_value_stars_asc, - sort_value_oldest_activity => sort_value_latest_activity, - sort_value_oldest_created => sort_value_recently_created, - sort_value_name_desc => sort_value_name, - sort_value_stars_asc => sort_value_stars_desc - } - - options.each do |key, opt| - expect(reverse_hash).to include(key) - expect(reverse_hash[key]).to eq(opt) + context 'returns a reversed hash of available sorting options' do + using RSpec::Parameterized::TableSyntax + + where(:sort_key, :reverse_sort_title) do + sort_value_latest_activity | sort_value_oldest_activity + sort_value_recently_created | sort_value_oldest_created + sort_value_name | sort_value_name_desc + sort_value_stars_desc | sort_value_stars_asc + sort_value_oldest_activity | sort_value_latest_activity + sort_value_oldest_created | sort_value_recently_created + sort_value_name_desc | sort_value_name + sort_value_stars_asc | sort_value_stars_desc + end + + with_them do + it do + reverse_hash = projects_reverse_sort_options_hash + + expect(reverse_hash).to include(sort_key) + expect(reverse_hash[sort_key]).to eq(reverse_sort_title) + end end end end describe '#project_sort_direction_button' do - it 'returns the correct icon for each sort option' do + context 'returns the correct icon for each sort option' do + using RSpec::Parameterized::TableSyntax + sort_lowest_icon = 'sort-lowest' sort_highest_icon = 'sort-highest' - sort_options_icons = { - sort_value_latest_activity => sort_highest_icon, - sort_value_recently_created => sort_highest_icon, - sort_value_name_desc => sort_highest_icon, - sort_value_stars_desc => sort_highest_icon, - sort_value_oldest_activity => sort_lowest_icon, - sort_value_oldest_created => sort_lowest_icon, - sort_value_name => sort_lowest_icon, - sort_value_stars_asc => sort_lowest_icon - } - - sort_options_icons.each do |selected_sort, icon| - set_sorting_url selected_sort + where(:selected_sort, :icon) do + sort_value_latest_activity | sort_highest_icon + sort_value_recently_created | sort_highest_icon + sort_value_name_desc | sort_highest_icon + sort_value_stars_desc | sort_highest_icon + sort_value_oldest_activity | sort_lowest_icon + sort_value_oldest_created | sort_lowest_icon + sort_value_name | sort_lowest_icon + sort_value_stars_asc | sort_lowest_icon + end + + with_them do + it do + set_sorting_url selected_sort - expect(project_sort_direction_button(selected_sort)).to include(icon) + expect(project_sort_direction_button(selected_sort)).to include(icon) + end end end @@ -159,25 +160,14 @@ describe SortingHelper do describe '#projects_sort_option_titles' do it 'returns a hash of titles for the sorting options' do - titles = projects_sort_option_titles - - options = { - sort_value_latest_activity => sort_title_latest_activity, - sort_value_recently_created => sort_title_created_date, - sort_value_name => sort_title_name, - sort_value_stars_desc => sort_title_stars, + options = project_common_options.merge({ sort_value_oldest_activity => sort_title_latest_activity, sort_value_oldest_created => sort_title_created_date, sort_value_name_desc => sort_title_name, sort_value_stars_asc => sort_title_stars - } - - expect(titles.length).to eq(options.length) + }) - titles.each do |key, opt| - expect(options).to include(key) - expect(options[key]).to eq(opt) - end + expect(projects_sort_option_titles).to eq(options) end end @@ -188,7 +178,6 @@ describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do - hash = projects_sort_options_hash options = project_common_options.merge({ sort_value_oldest_activity => sort_title_oldest_activity, sort_value_oldest_created => sort_title_oldest_created, @@ -196,10 +185,7 @@ describe SortingHelper do sort_value_stars_desc => sort_title_most_stars }) - options.each do |key, opt| - expect(hash).to include(key) - expect(hash[key]).to eq(opt) - end + expect(projects_sort_options_hash).to eq(options) end end end -- cgit v1.2.1