diff options
Diffstat (limited to 'spec/finders/personal_projects_finder_spec.rb')
-rw-r--r-- | spec/finders/personal_projects_finder_spec.rb | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/spec/finders/personal_projects_finder_spec.rb b/spec/finders/personal_projects_finder_spec.rb index 493ec0e569e..af3b5bf894b 100644 --- a/spec/finders/personal_projects_finder_spec.rb +++ b/spec/finders/personal_projects_finder_spec.rb @@ -3,14 +3,16 @@ require 'spec_helper' RSpec.describe PersonalProjectsFinder do - let(:source_user) { create(:user) } - let(:current_user) { create(:user) } - let(:finder) { described_class.new(source_user) } + let_it_be(:source_user) { create(:user) } + let_it_be(:current_user) { create(:user) } + let_it_be(:admin) { create(:admin) } + + let(:finder) { described_class.new(source_user) } let!(:public_project) do - create(:project, :public, namespace: source_user.namespace, updated_at: 1.hour.ago) + create(:project, :public, namespace: source_user.namespace, updated_at: 1.hour.ago, path: 'pblc') end - let!(:private_project) do + let!(:private_project_shared) do create(:project, :private, namespace: source_user.namespace, updated_at: 3.hours.ago, path: 'mepmep') end @@ -18,8 +20,12 @@ RSpec.describe PersonalProjectsFinder do create(:project, :internal, namespace: source_user.namespace, updated_at: 2.hours.ago, path: 'C') end + let!(:private_project_self) do + create(:project, :private, namespace: source_user.namespace, updated_at: 3.hours.ago, path: 'D') + end + before do - private_project.add_developer(current_user) + private_project_shared.add_developer(current_user) end describe 'without a current user' do @@ -29,18 +35,26 @@ RSpec.describe PersonalProjectsFinder do end describe 'with a current user' do - subject { finder.execute(current_user) } - context 'normal user' do - it { is_expected.to eq([public_project, internal_project, private_project]) } + subject { finder.execute(current_user) } + + it { is_expected.to match_array([public_project, internal_project, private_project_shared]) } end context 'external' do + subject { finder.execute(current_user) } + before do current_user.update!(external: true) end - it { is_expected.to eq([public_project, private_project]) } + it { is_expected.to match_array([public_project, private_project_shared]) } + end + + context 'and searching with an admin user', :enable_admin_mode do + subject { finder.execute(admin) } + + it { is_expected.to match_array([public_project, internal_project, private_project_self, private_project_shared]) } end end end |