summaryrefslogtreecommitdiff
path: root/spec/helpers/blob_helper_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/blob_helper_spec.rb')
-rw-r--r--spec/helpers/blob_helper_spec.rb65
1 files changed, 53 insertions, 12 deletions
diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb
index baa97781efa..cafe4c4275e 100644
--- a/spec/helpers/blob_helper_spec.rb
+++ b/spec/helpers/blob_helper_spec.rb
@@ -236,11 +236,7 @@ RSpec.describe BlobHelper do
let(:data) { File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) }
let(:blob) { fake_blob(path: Gitlab::FileDetector::PATTERNS[:gitlab_ci], data: data) }
- context 'experiment enabled' do
- before do
- allow(helper).to receive(:experiment_enabled?).and_return(true)
- end
-
+ context 'feature enabled' do
it 'is true' do
expect(helper.show_suggest_pipeline_creation_celebration?).to be_truthy
end
@@ -284,9 +280,9 @@ RSpec.describe BlobHelper do
end
end
- context 'experiment disabled' do
+ context 'feature disabled' do
before do
- allow(helper).to receive(:experiment_enabled?).and_return(false)
+ stub_feature_flags(suggest_pipeline: false)
end
it 'is false' do
@@ -298,11 +294,7 @@ RSpec.describe BlobHelper do
context 'when file is not a pipeline config file' do
let(:blob) { fake_blob(path: 'LICENSE') }
- context 'experiment enabled' do
- before do
- allow(helper).to receive(:experiment_enabled?).and_return(true)
- end
-
+ context 'feature enabled' do
it 'is false' do
expect(helper.show_suggest_pipeline_creation_celebration?).to be_falsey
end
@@ -444,6 +436,55 @@ RSpec.describe BlobHelper do
end
end
+ describe '#ide_merge_request_path' do
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:merge_request) { create(:merge_request, source_project: project)}
+
+ it 'returns IDE path for the given MR if MR is not merged' do
+ expect(helper.ide_merge_request_path(merge_request)).to eq("/-/ide/project/#{project.full_path}/merge_requests/#{merge_request.iid}")
+ end
+
+ context 'when the MR comes from a fork' do
+ include ProjectForksHelper
+
+ let(:forked_project) { fork_project(project, nil, repository: true) }
+ let(:merge_request) { create(:merge_request, source_project: forked_project, target_project: project) }
+
+ it 'returns IDE path for MR in the forked repo with target project included as param' do
+ expect(helper.ide_merge_request_path(merge_request)).to eq("/-/ide/project/#{forked_project.full_path}/merge_requests/#{merge_request.iid}?target_project=#{CGI.escape(project.full_path)}")
+ end
+ end
+
+ context 'when the MR is merged' do
+ let(:current_user) { build(:user) }
+
+ let_it_be(:merge_request) { create(:merge_request, :merged, source_project: project, source_branch: 'testing-1', target_branch: 'feature-1') }
+
+ before do
+ allow(helper).to receive(:current_user).and_return(current_user)
+ allow(helper).to receive(:can?).and_return(true)
+ end
+
+ it 'returns default IDE url with master branch' do
+ expect(helper.ide_merge_request_path(merge_request)).to eq("/-/ide/project/#{project.full_path}/edit/master")
+ end
+
+ it 'includes file path passed' do
+ expect(helper.ide_merge_request_path(merge_request, 'README.md')).to eq("/-/ide/project/#{project.full_path}/edit/master/-/README.md")
+ end
+
+ context 'when target branch exists' do
+ before do
+ allow(merge_request).to receive(:target_branch_exists?).and_return(true)
+ end
+
+ it 'returns IDE edit url with the target branch' do
+ expect(helper.ide_merge_request_path(merge_request)).to eq("/-/ide/project/#{project.full_path}/edit/feature-1")
+ end
+ end
+ end
+ end
+
describe '#ide_fork_and_edit_path' do
let_it_be(:project) { create(:project) }
let_it_be(:user) { create(:user) }