diff options
author | Toon Claes <toon@gitlab.com> | 2017-05-23 23:38:12 +0300 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2017-05-30 23:45:59 +0300 |
commit | 0725050802dd30d4c235b6a2d28dd494d2d7429b (patch) | |
tree | 75d15c61638311a9bd53d291856708955e29badd | |
parent | 8e72ad70bd2479ae5a465eac1df74f99f03ea731 (diff) |
Change ProjectFinder so starred can be combined with other filters
The `starred` parameter couldn't be used in combination with `trending` or
`non_public`. But this is changed now.
-rw-r--r-- | app/finders/projects_finder.rb | 7 | ||||
-rw-r--r-- | spec/finders/projects_finder_spec.rb | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb index f6d8226bf3f..588406982d7 100644 --- a/app/finders/projects_finder.rb +++ b/app/finders/projects_finder.rb @@ -31,6 +31,7 @@ class ProjectsFinder < UnionFinder items = by_ids(items) items = union(items) items = by_personal(items) + items = by_starred(items) items = by_visibilty_level(items) items = by_tags(items) items = by_search(items) @@ -45,8 +46,6 @@ class ProjectsFinder < UnionFinder if params[:trending].present? projects << Project.trending - elsif params[:starred].present? && current_user - projects << current_user.viewable_starred_projects else projects << current_user.authorized_projects if current_user projects << Project.unscoped.public_to_user(current_user) unless params[:non_public].present? @@ -67,6 +66,10 @@ class ProjectsFinder < UnionFinder (params[:personal].present? && current_user) ? items.personal(current_user) : items end + def by_starred(items) + (params[:starred].present? && current_user) ? items.starred_by(current_user) : items + end + def by_visibilty_level(items) params[:visibility_level].present? ? items.where(visibility_level: params[:visibility_level]) : items end diff --git a/spec/finders/projects_finder_spec.rb b/spec/finders/projects_finder_spec.rb index 148adcffe3b..077f2624388 100644 --- a/spec/finders/projects_finder_spec.rb +++ b/spec/finders/projects_finder_spec.rb @@ -146,13 +146,19 @@ describe ProjectsFinder do it { is_expected.to eq([private_project]) } end - describe 'filter by viewable_starred_projects' do + describe 'filter by starred' do let(:params) { { starred: true } } before do current_user.toggle_star(public_project) end it { is_expected.to eq([public_project]) } + + it 'returns only projects the user has access to' do + current_user.toggle_star(private_project) + + is_expected.to eq([public_project]) + end end describe 'sorting' do |