mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-22 19:16:39 +10:00
Added Project.visible_to_user
This method can be used to filter projects to those visible to a given user.
This commit is contained in:
@@ -286,6 +286,10 @@ class Project < ActiveRecord::Base
|
||||
|
||||
joins(join_body).reorder('join_note_counts.amount DESC')
|
||||
end
|
||||
|
||||
def visible_to_user(user)
|
||||
where(id: user.authorized_projects.select(:id).reorder(nil))
|
||||
end
|
||||
end
|
||||
|
||||
def team
|
||||
|
||||
@@ -464,4 +464,23 @@ describe Project do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.visible_to_user' do
|
||||
let!(:project) { create(:project, :private) }
|
||||
let!(:user) { create(:user) }
|
||||
|
||||
subject { described_class.visible_to_user(user) }
|
||||
|
||||
describe 'when a user has access to a project' do
|
||||
before do
|
||||
project.team.add_user(user, Gitlab::Access::MASTER)
|
||||
end
|
||||
|
||||
it { is_expected.to eq([project]) }
|
||||
end
|
||||
|
||||
describe 'when a user does not have access to any projects' do
|
||||
it { is_expected.to eq([]) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user