Extract EE specific files/lines for some discussion tests
We have the following files containing EE specific code. We should move them to ee/
spec/presenters/merge_request_presenter_spec.rb
diff --git a/spec/presenters/merge_request_presenter_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/presenters/merge_request_presenter_spec.rb
index bafcddebbb7..0ae7008f6a1 100644
--- a/spec/presenters/merge_request_presenter_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/presenters/merge_request_presenter_spec.rb
@@ -2,7 +2,7 @@ require 'spec_helper'
describe MergeRequestPresenter do
let(:resource) { create :merge_request, source_project: project }
- let(:project) { create :project }
+ let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
describe '#ci_status' do
@@ -392,6 +392,111 @@ describe MergeRequestPresenter do
end
end
+ describe '#can_push_to_source_branch' do
+ before do
+ allow(resource).to receive(:source_branch_exists?) { source_branch_exists }
+
+ allow_any_instance_of(Gitlab::UserAccess::RequestCacheExtension)
+ .to receive(:can_push_to_branch?)
+ .with(resource.source_branch)
+ .and_return(can_push_to_branch)
+ end
+
+ subject do
+ described_class.new(resource, current_user: user).can_push_to_source_branch?
+ end
+
+ context 'when source branch exists AND user can push to source branch' do
+ let(:source_branch_exists) { true }
+ let(:can_push_to_branch) { true }
+
+ it 'returns true' do
+ is_expected.to eq(true)
+ end
+ end
+
+ context 'when source branch does not exists' do
+ let(:source_branch_exists) { false }
+ let(:can_push_to_branch) { true }
+
+ it 'returns false' do
+ is_expected.to eq(false)
+ end
+ end
+
+ context 'when user cannot push to source branch' do
+ let(:source_branch_exists) { true }
+ let(:can_push_to_branch) { false }
+
+ it 'returns false' do
+ is_expected.to eq(false)
+ end
+ end
+ end
+
+ describe '#rebase_path' do
+ before do
+ allow(resource).to receive(:rebase_in_progress?) { rebase_in_progress }
+ allow(resource).to receive(:should_be_rebased?) { should_be_rebased }
+
+ allow_any_instance_of(Gitlab::UserAccess::RequestCacheExtension)
+ .to receive(:can_push_to_branch?)
+ .with(resource.source_branch)
+ .and_return(can_push_to_branch)
+ end
+
+ subject do
+ described_class.new(resource, current_user: user).rebase_path
+ end
+
+ context 'when can rebase' do
+ let(:rebase_in_progress) { false }
+ let(:can_push_to_branch) { true }
+ let(:should_be_rebased) { true }
+
+ before do
+ allow(resource).to receive(:source_branch_exists?) { true }
+ end
+
+ it 'returns path' do
+ is_expected
+ .to eq("/#{project.full_path}/merge_requests/#{resource.iid}/rebase")
+ end
+ end
+
+ context 'when cannot rebase' do
+ context 'when rebase in progress' do
+ let(:rebase_in_progress) { true }
+ let(:can_push_to_branch) { true }
+ let(:should_be_rebased) { true }
+
+ it 'returns nil' do
+ is_expected.to be_nil
+ end
+ end
+
+ context 'when user cannot merge' do
+ let(:rebase_in_progress) { false }
+ let(:can_push_to_branch) { false }
+ let(:should_be_rebased) { true }
+
+ it 'returns nil' do
+ is_expected.to be_nil
+ end
+ end
+
+ context 'should not be rebased' do
+ let(:rebase_in_progress) { false }
+ let(:can_push_to_branch) { true }
+ let(:should_be_rebased) { false }
+
+ it 'returns nil' do
+ is_expected.to be_nil
+ end
+ end
+ end
+ end
+
describe '#source_branch_with_namespace_link' do
subject do
described_class.new(resource, current_user: user).source_branch_with_namespace_link
spec/services/boards/issues/create_service_spec.rb
diff --git a/spec/services/boards/issues/create_service_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/boards/issues/create_service_spec.rb
index f0179e35652..c16d0d2a6b1 100644
--- a/spec/services/boards/issues/create_service_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/boards/issues/create_service_spec.rb
@@ -29,5 +29,23 @@ describe Boards::Issues::CreateService do
expect(issue.labels).to eq [label]
end
+
+ it 'adds the board assignee, weight, labels and milestone to the issue' do
+ board_assignee = create(:user)
+ project.add_developer(board_assignee)
+ board_milestone = create(:milestone, project: project)
+ board_label = create(:label, project: project)
+ board.update!(assignee: board_assignee,
+ milestone: board_milestone,
+ label_ids: [board_label.id],
+ weight: 4)
+
+ issue = service.execute
+
+ expect(issue.assignees).to eq([board_assignee])
+ expect(issue.weight).to eq(board.weight)
+ expect(issue.milestone).to eq(board_milestone)
+ expect(issue.labels).to contain_exactly(label, board_label)
+ end
end
end
spec/services/issues/move_service_spec.rb
diff --git a/spec/services/issues/move_service_spec.rb b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/issues/move_service_spec.rb
index 1e088bc7d9b..5da4a638be1 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/home/yorickpeterse/Projects/gitlab/gdk-ee/gitlab/spec/services/issues/move_service_spec.rb
@@ -138,6 +138,20 @@ describe Issues::MoveService do
.not_to raise_error # Sidekiq::Worker::EnqueueFromTransactionError
end
end
+
+ context 'group issue hooks' do
+ let!(:hook) { create(:group_hook, group: new_project.group, issues_events: true) }
+
+ it 'executes group issue hooks' do
+ allow_any_instance_of(WebHookService).to receive(:execute)
+
+ # Ideally, we'd test that `WebHookWorker.jobs.size` increased by 1,
+ # but since the entire spec run takes place in a transaction, we never
+ # actually get to the `after_commit` hook that queues these jobs.
+ expect { move_service.execute(old_issue, new_project) }
+ .not_to raise_error # Sidekiq::Worker::EnqueueFromTransactionError
+ end
+ end
end
describe 'move permissions' do
Looks like they're EE only tests and we could just move to the EE spec files.
Edited by Yorick Peterse