2020-10-30 08:08:44 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
RSpec.describe Ci::PipelineEditorHelper do
|
|
|
|
let_it_be(:project) { create(:project) }
|
|
|
|
|
|
|
|
describe 'can_view_pipeline_editor?' do
|
|
|
|
subject { helper.can_view_pipeline_editor?(project) }
|
|
|
|
|
|
|
|
it 'user can view editor if they can collaborate' do
|
|
|
|
allow(helper).to receive(:can_collaborate_with_project?).and_return(true)
|
|
|
|
|
|
|
|
expect(subject).to be true
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'user can not view editor if they cannot collaborate' do
|
|
|
|
allow(helper).to receive(:can_collaborate_with_project?).and_return(false)
|
|
|
|
|
|
|
|
expect(subject).to be false
|
|
|
|
end
|
|
|
|
end
|
2021-04-09 11:09:10 -04:00
|
|
|
|
|
|
|
describe '#js_pipeline_editor_data' do
|
|
|
|
let(:project) { create(:project, :repository) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
allow(helper)
|
|
|
|
.to receive(:namespace_project_new_merge_request_path)
|
|
|
|
.and_return('/mock/project/-/merge_requests/new')
|
|
|
|
|
|
|
|
allow(helper)
|
|
|
|
.to receive(:image_path)
|
|
|
|
.and_return('foo')
|
|
|
|
end
|
|
|
|
|
|
|
|
subject(:pipeline_editor_data) { helper.js_pipeline_editor_data(project) }
|
|
|
|
|
2021-05-04 14:10:03 -04:00
|
|
|
context 'with a project with commits' do
|
|
|
|
it 'returns pipeline editor data' do
|
|
|
|
expect(pipeline_editor_data).to eq({
|
|
|
|
"ci-config-path": project.ci_config_path_or_default,
|
2021-06-28 08:38:12 -04:00
|
|
|
"ci-examples-help-page-path" => help_page_path('ci/examples/index'),
|
2021-06-28 11:08:03 -04:00
|
|
|
"ci-help-page-path" => help_page_path('ci/index'),
|
2021-05-04 14:10:03 -04:00
|
|
|
"commit-sha" => project.commit.sha,
|
2021-07-01 20:07:53 -04:00
|
|
|
"default-branch" => project.default_branch_or_main,
|
2021-05-04 14:10:03 -04:00
|
|
|
"empty-state-illustration-path" => 'foo',
|
2021-07-12 08:09:39 -04:00
|
|
|
"initial-branch-name" => nil,
|
2021-05-04 14:10:03 -04:00
|
|
|
"lint-help-page-path" => help_page_path('ci/lint', anchor: 'validate-basic-logic-and-syntax'),
|
2021-07-22 02:08:43 -04:00
|
|
|
"needs-help-page-path" => help_page_path('ci/yaml/index', anchor: 'needs'),
|
2021-05-04 14:10:03 -04:00
|
|
|
"new-merge-request-path" => '/mock/project/-/merge_requests/new',
|
|
|
|
"pipeline_etag" => graphql_etag_pipeline_sha_path(project.commit.sha),
|
2021-05-11 11:10:20 -04:00
|
|
|
"pipeline-page-path" => project_pipelines_path(project),
|
2021-05-04 14:10:03 -04:00
|
|
|
"project-path" => project.path,
|
|
|
|
"project-full-path" => project.full_path,
|
|
|
|
"project-namespace" => project.namespace.full_path,
|
2021-06-28 08:38:12 -04:00
|
|
|
"runner-help-page-path" => help_page_path('ci/runners/index'),
|
2021-05-13 14:10:32 -04:00
|
|
|
"total-branches" => project.repository.branches.length,
|
2021-07-22 02:08:43 -04:00
|
|
|
"yml-help-page-path" => help_page_path('ci/yaml/index')
|
2021-05-04 14:10:03 -04:00
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with an empty project' do
|
|
|
|
let(:project) { create(:project, :empty_repo) }
|
|
|
|
|
|
|
|
it 'returns pipeline editor data' do
|
|
|
|
expect(pipeline_editor_data).to eq({
|
|
|
|
"ci-config-path": project.ci_config_path_or_default,
|
2021-06-28 08:38:12 -04:00
|
|
|
"ci-examples-help-page-path" => help_page_path('ci/examples/index'),
|
2021-06-28 11:08:03 -04:00
|
|
|
"ci-help-page-path" => help_page_path('ci/index'),
|
2021-05-04 14:10:03 -04:00
|
|
|
"commit-sha" => '',
|
2021-07-01 20:07:53 -04:00
|
|
|
"default-branch" => project.default_branch_or_main,
|
2021-05-04 14:10:03 -04:00
|
|
|
"empty-state-illustration-path" => 'foo',
|
2021-07-12 08:09:39 -04:00
|
|
|
"initial-branch-name" => nil,
|
2021-05-04 14:10:03 -04:00
|
|
|
"lint-help-page-path" => help_page_path('ci/lint', anchor: 'validate-basic-logic-and-syntax'),
|
2021-07-22 02:08:43 -04:00
|
|
|
"needs-help-page-path" => help_page_path('ci/yaml/index', anchor: 'needs'),
|
2021-05-04 14:10:03 -04:00
|
|
|
"new-merge-request-path" => '/mock/project/-/merge_requests/new',
|
|
|
|
"pipeline_etag" => '',
|
2021-05-11 11:10:20 -04:00
|
|
|
"pipeline-page-path" => project_pipelines_path(project),
|
2021-05-04 14:10:03 -04:00
|
|
|
"project-path" => project.path,
|
|
|
|
"project-full-path" => project.full_path,
|
|
|
|
"project-namespace" => project.namespace.full_path,
|
2021-06-28 08:38:12 -04:00
|
|
|
"runner-help-page-path" => help_page_path('ci/runners/index'),
|
2021-05-13 14:10:32 -04:00
|
|
|
"total-branches" => 0,
|
2021-07-22 02:08:43 -04:00
|
|
|
"yml-help-page-path" => help_page_path('ci/yaml/index')
|
2021-05-04 14:10:03 -04:00
|
|
|
})
|
|
|
|
end
|
2021-04-09 11:09:10 -04:00
|
|
|
end
|
2021-07-12 08:09:39 -04:00
|
|
|
|
|
|
|
context 'with a non-default branch name' do
|
|
|
|
let(:user) { create(:user) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
create_commit('Message', project, user, 'feature')
|
|
|
|
controller.params[:branch_name] = 'feature'
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns correct values' do
|
|
|
|
latest_feature_sha = project.repository.commit('feature').sha
|
|
|
|
|
|
|
|
expect(pipeline_editor_data['initial-branch-name']).to eq('feature')
|
|
|
|
expect(pipeline_editor_data['commit-sha']).to eq(latest_feature_sha)
|
|
|
|
end
|
|
|
|
end
|
2021-04-09 11:09:10 -04:00
|
|
|
end
|
2020-10-30 08:08:44 -04:00
|
|
|
end
|