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/scripts/setup/find_jh_branch_spec.rb')
-rw-r--r--spec/scripts/setup/find_jh_branch_spec.rb97
1 files changed, 97 insertions, 0 deletions
diff --git a/spec/scripts/setup/find_jh_branch_spec.rb b/spec/scripts/setup/find_jh_branch_spec.rb
new file mode 100644
index 00000000000..dfc3601ffa9
--- /dev/null
+++ b/spec/scripts/setup/find_jh_branch_spec.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+require 'fast_spec_helper'
+
+# NOTE: Under the context of fast_spec_helper, when we `require 'gitlab'`
+# we do not load the Gitlab client, but our own Gitlab module.
+# Keep this in mind and just stub anything which might touch it!
+require_relative '../../../scripts/setup/find-jh-branch'
+
+RSpec.describe FindJhBranch do
+ subject { described_class.new }
+
+ describe '#run' do
+ context 'when it is not a merge request' do
+ before do
+ expect(subject).to receive(:merge_request?).and_return(false)
+ end
+
+ it 'returns JH_DEFAULT_BRANCH' do
+ expect(subject.run).to eq(described_class::JH_DEFAULT_BRANCH)
+ end
+ end
+
+ context 'when it is a merge request' do
+ let(:branch_name) { 'branch-name' }
+ let(:jh_branch_name) { 'branch-name-jh' }
+ let(:default_branch) { 'main' }
+ let(:merge_request) { double(target_branch: target_branch) }
+ let(:target_branch) { default_branch }
+
+ before do
+ expect(subject).to receive(:merge_request?).and_return(true)
+
+ expect(subject)
+ .to receive(:branch_exist?)
+ .with(described_class::JH_PROJECT_PATH, jh_branch_name)
+ .and_return(jh_branch_exist)
+
+ allow(subject).to receive(:ref_name).and_return(branch_name)
+ allow(subject).to receive(:default_branch).and_return(default_branch)
+ allow(subject).to receive(:merge_request).and_return(merge_request)
+ end
+
+ context 'when there is a corresponding JH branch' do
+ let(:jh_branch_exist) { true }
+
+ it 'returns the corresponding JH branch name' do
+ expect(subject.run).to eq(jh_branch_name)
+ end
+ end
+
+ context 'when there is no corresponding JH branch' do
+ let(:jh_branch_exist) { false }
+
+ it 'returns the default JH branch' do
+ expect(subject.run).to eq(described_class::JH_DEFAULT_BRANCH)
+ end
+
+ context 'when it is targeting a default branch' do
+ let(:target_branch) { '14-6-stable-ee' }
+ let(:jh_stable_branch_name) { '14-6-stable-jh' }
+
+ before do
+ expect(subject)
+ .to receive(:branch_exist?)
+ .with(described_class::JH_PROJECT_PATH, jh_stable_branch_name)
+ .and_return(jh_stable_branch_exist)
+ end
+
+ context 'when there is a corresponding JH stable branch' do
+ let(:jh_stable_branch_exist) { true }
+
+ it 'returns the corresponding JH stable branch' do
+ expect(subject.run).to eq(jh_stable_branch_name)
+ end
+ end
+
+ context 'when there is no corresponding JH stable branch' do
+ let(:jh_stable_branch_exist) { false }
+
+ it "raises #{described_class::BranchNotFound}" do
+ expect { subject.run }.to raise_error(described_class::BranchNotFound)
+ end
+ end
+ end
+
+ context 'when it is not targeting the default branch' do
+ let(:target_branch) { default_branch.swapcase }
+
+ it 'returns the default JH branch' do
+ expect(subject.run).to eq(described_class::JH_DEFAULT_BRANCH)
+ end
+ end
+ end
+ end
+ end
+end