Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/projects/fork_service_spec.rb')
-rw-r--r--spec/services/projects/fork_service_spec.rb69
1 files changed, 52 insertions, 17 deletions
diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb
index c49aa42b147..925c2ff5d88 100644
--- a/spec/services/projects/fork_service_spec.rb
+++ b/spec/services/projects/fork_service_spec.rb
@@ -105,6 +105,7 @@ RSpec.describe Projects::ForkService do
group.add_owner(@to_user)
group
end
+
let(:to_project) { fork_project(from_forked_project, @to_user, namespace: other_namespace) }
it 'sets the root of the network to the root project' do
@@ -439,37 +440,71 @@ RSpec.describe Projects::ForkService do
end
describe '#valid_fork_target?' do
- subject { described_class.new(project, user, params).valid_fork_target? }
-
let(:project) { Project.new }
let(:params) { {} }
- context 'when current user is an admin' do
- let(:user) { build(:user, :admin) }
+ context 'when target is not passed' do
+ subject { described_class.new(project, user, params).valid_fork_target? }
- it { is_expected.to be_truthy }
- end
+ context 'when current user is an admin' do
+ let(:user) { build(:user, :admin) }
- context 'when current_user is not an admin' do
- let(:user) { create(:user) }
+ it { is_expected.to be_truthy }
+ end
- let(:finder_mock) { instance_double('ForkTargetsFinder', execute: [user.namespace]) }
- let(:project) { create(:project) }
+ context 'when current_user is not an admin' do
+ let(:user) { create(:user) }
- before do
- allow(ForkTargetsFinder).to receive(:new).with(project, user).and_return(finder_mock)
+ let(:finder_mock) { instance_double('ForkTargetsFinder', execute: [user.namespace]) }
+ let(:project) { create(:project) }
+
+ before do
+ allow(ForkTargetsFinder).to receive(:new).with(project, user).and_return(finder_mock)
+ end
+
+ context 'when target namespace is in valid fork targets' do
+ let(:params) { { namespace: user.namespace } }
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when target namespace is not in valid fork targets' do
+ let(:params) { { namespace: create(:group) } }
+
+ it { is_expected.to be_falsey }
+ end
end
+ end
+
+ context 'when target is passed' do
+ let(:target) { create(:group) }
- context 'when target namespace is in valid fork targets' do
- let(:params) { { namespace: user.namespace } }
+ subject { described_class.new(project, user, params).valid_fork_target?(target) }
+
+ context 'when current user is an admin' do
+ let(:user) { build(:user, :admin) }
it { is_expected.to be_truthy }
end
- context 'when target namespace is not in valid fork targets' do
- let(:params) { { namespace: create(:group) } }
+ context 'when current user is not an admin' do
+ let(:user) { create(:user) }
- it { is_expected.to be_falsey }
+ before do
+ allow(ForkTargetsFinder).to receive(:new).with(project, user).and_return(finder_mock)
+ end
+
+ context 'when target namespace is in valid fork targets' do
+ let(:finder_mock) { instance_double('ForkTargetsFinder', execute: [target]) }
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when target namespace is not in valid fork targets' do
+ let(:finder_mock) { instance_double('ForkTargetsFinder', execute: [create(:group)]) }
+
+ it { is_expected.to be_falsey }
+ end
end
end
end