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/presenters')
-rw-r--r--spec/presenters/blobs/unfold_presenter_spec.rb20
-rw-r--r--spec/presenters/ci/build_runner_presenter_spec.rb17
-rw-r--r--spec/presenters/commit_presenter_spec.rb5
-rw-r--r--spec/presenters/deploy_key_presenter_spec.rb24
-rw-r--r--spec/presenters/event_presenter_spec.rb8
-rw-r--r--spec/presenters/key_presenter_spec.rb32
-rw-r--r--spec/presenters/project_presenter_spec.rb8
-rw-r--r--spec/presenters/projects/security/configuration_presenter_spec.rb31
8 files changed, 116 insertions, 29 deletions
diff --git a/spec/presenters/blobs/unfold_presenter_spec.rb b/spec/presenters/blobs/unfold_presenter_spec.rb
index 14c36461e90..9b3b7f5a1c8 100644
--- a/spec/presenters/blobs/unfold_presenter_spec.rb
+++ b/spec/presenters/blobs/unfold_presenter_spec.rb
@@ -5,13 +5,13 @@ require 'spec_helper'
RSpec.describe Blobs::UnfoldPresenter do
include FakeBlobHelpers
- let(:project) { create(:project, :repository) }
- let(:blob) { fake_blob(path: 'foo', data: "1\n2\n3") }
- let(:subject) { described_class.new(blob, params) }
+ let(:project) { nil } # Project object is not needed but `fake_blob` helper requires it to be defined.
+ let(:blob) { fake_blob(path: 'foo', data: data) }
+ let(:data) { "1\n\2\n3" }
- describe '#initialize' do
- let(:result) { subject }
+ subject(:result) { described_class.new(blob, params) }
+ describe '#initialize' do
context 'with empty params' do
let(:params) { {} }
@@ -71,7 +71,7 @@ RSpec.describe Blobs::UnfoldPresenter do
describe '#diff_lines' do
let(:total_lines) { 50 }
- let(:blob) { fake_blob(path: 'foo', data: (1..total_lines).to_a.join("\n")) }
+ let(:data) { (1..total_lines).to_a.join("\n") }
context 'when "full" is true' do
let(:params) { { full: true } }
@@ -91,7 +91,7 @@ RSpec.describe Blobs::UnfoldPresenter do
end
context 'when last line is empty' do
- let(:blob) { fake_blob(path: 'foo', data: "1\n2\n") }
+ let(:data) { "1\n2\n" }
it 'disregards last line' do
lines = subject.diff_lines
@@ -123,7 +123,7 @@ RSpec.describe Blobs::UnfoldPresenter do
expect(line.new_pos).to eq(5)
end
- context '"to" is higher than blob size' do
+ context 'when "to" is higher than blob size' do
let(:params) { default_params.merge(to: total_lines + 10, bottom: true) }
it 'does not add bottom match line' do
@@ -133,7 +133,7 @@ RSpec.describe Blobs::UnfoldPresenter do
end
end
- context '"to" is equal to blob size' do
+ context 'when "to" is equal to blob size' do
let(:params) { default_params.merge(to: total_lines, bottom: true) }
it 'does not add bottom match line' do
@@ -143,7 +143,7 @@ RSpec.describe Blobs::UnfoldPresenter do
end
end
- context '"to" is less than blob size' do
+ context 'when "to" is less than blob size' do
let(:params) { default_params.merge(to: total_lines - 3, bottom: true) }
it 'adds bottom match line' do
diff --git a/spec/presenters/ci/build_runner_presenter_spec.rb b/spec/presenters/ci/build_runner_presenter_spec.rb
index fe2d8f0f670..396fe7843ba 100644
--- a/spec/presenters/ci/build_runner_presenter_spec.rb
+++ b/spec/presenters/ci/build_runner_presenter_spec.rb
@@ -350,6 +350,15 @@ RSpec.describe Ci::BuildRunnerPresenter do
)
end
+ it 'logs file_variable_is_referenced_in_another_variable' do
+ expect(Gitlab::AppJsonLogger).to receive(:info).with(
+ event: 'file_variable_is_referenced_in_another_variable',
+ project_id: project.id
+ ).once
+
+ runner_variables
+ end
+
context 'when the FF ci_stop_expanding_file_vars_for_runners is disabled' do
before do
stub_feature_flags(ci_stop_expanding_file_vars_for_runners: false)
@@ -383,10 +392,10 @@ RSpec.describe Ci::BuildRunnerPresenter do
it 'returns expanded and sorted variables' do
is_expected.to eq [
- { key: 'C', value: 'value', public: false, masked: false },
- { key: 'B', value: 'refB-value-$D', public: false, masked: false },
- { key: 'A', value: 'refA-refB-value-$D', public: false, masked: false }
- ]
+ { key: 'C', value: 'value', public: false, masked: false },
+ { key: 'B', value: 'refB-value-$D', public: false, masked: false },
+ { key: 'A', value: 'refA-refB-value-$D', public: false, masked: false }
+ ]
end
end
end
diff --git a/spec/presenters/commit_presenter_spec.rb b/spec/presenters/commit_presenter_spec.rb
index df3ee69621b..eba393da2b7 100644
--- a/spec/presenters/commit_presenter_spec.rb
+++ b/spec/presenters/commit_presenter_spec.rb
@@ -3,11 +3,12 @@
require 'spec_helper'
RSpec.describe CommitPresenter do
- let(:project) { create(:project, :repository) }
let(:commit) { project.commit }
- let(:user) { create(:user) }
let(:presenter) { described_class.new(commit, current_user: user) }
+ let_it_be(:user) { build_stubbed(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+
describe '#web_path' do
it { expect(presenter.web_path).to eq("/#{project.full_path}/-/commit/#{commit.sha}") }
end
diff --git a/spec/presenters/deploy_key_presenter_spec.rb b/spec/presenters/deploy_key_presenter_spec.rb
new file mode 100644
index 00000000000..9e50da12395
--- /dev/null
+++ b/spec/presenters/deploy_key_presenter_spec.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe DeployKeyPresenter do
+ let(:presenter) { described_class.new(deploy_key) }
+
+ describe '#humanized_error_message' do
+ subject { presenter.humanized_error_message }
+
+ before do
+ deploy_key.valid?
+ end
+
+ context 'when public key is unsupported' do
+ let(:deploy_key) { build(:deploy_key, key: 'a') }
+
+ it 'returns the custom error message' do
+ expect(subject).to eq('Deploy Key must be a <a target="_blank" rel="noopener noreferrer" ' \
+ 'href="/help/user/ssh#supported-ssh-key-types">supported SSH public key.</a>')
+ end
+ end
+ end
+end
diff --git a/spec/presenters/event_presenter_spec.rb b/spec/presenters/event_presenter_spec.rb
index 5a67fd92c9d..9093791421d 100644
--- a/spec/presenters/event_presenter_spec.rb
+++ b/spec/presenters/event_presenter_spec.rb
@@ -51,6 +51,14 @@ RSpec.describe EventPresenter do
it 'returns milestone for a milestone event' do
expect(group_event.present).to have_attributes(target_type_name: 'milestone')
end
+
+ it 'returns the issue_type for issue events' do
+ expect(build(:event, :for_issue, :created).present).to have_attributes(target_type_name: 'issue')
+ end
+
+ it 'returns the issue_type for work item events' do
+ expect(build(:event, :for_work_item, :created).present).to have_attributes(target_type_name: 'task')
+ end
end
describe '#note_target_type_name' do
diff --git a/spec/presenters/key_presenter_spec.rb b/spec/presenters/key_presenter_spec.rb
new file mode 100644
index 00000000000..d5aa39d5933
--- /dev/null
+++ b/spec/presenters/key_presenter_spec.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe KeyPresenter do
+ let(:presenter) { described_class.new(key) }
+
+ describe '#humanized_error_message' do
+ subject { presenter.humanized_error_message }
+
+ before do
+ key.valid?
+ end
+
+ context 'when public key is unsupported' do
+ let(:key) { build(:key, key: 'a') }
+
+ it 'returns the custom error message' do
+ expect(subject).to eq('Key must be a <a target="_blank" rel="noopener noreferrer" ' \
+ 'href="/help/user/ssh#supported-ssh-key-types">supported SSH public key.</a>')
+ end
+ end
+
+ context 'when key is expired' do
+ let(:key) { build(:key, :expired) }
+
+ it 'returns Active Record error message' do
+ expect(subject).to eq('Key has expired')
+ end
+ end
+ end
+end
diff --git a/spec/presenters/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb
index 7ff19b1b770..832deee6186 100644
--- a/spec/presenters/project_presenter_spec.rb
+++ b/spec/presenters/project_presenter_spec.rb
@@ -10,13 +10,15 @@ RSpec.describe ProjectPresenter do
describe '#license_short_name' do
context 'when project.repository has a license_key' do
it 'returns the nickname of the license if present' do
- allow(project.repository).to receive(:license_key).and_return('agpl-3.0')
+ allow(project.repository).to receive(:license).and_return(
+ ::Gitlab::Git::DeclaredLicense.new(name: 'foo', nickname: 'GNU AGPLv3'))
expect(presenter.license_short_name).to eq('GNU AGPLv3')
end
it 'returns the name of the license if nickname is not present' do
- allow(project.repository).to receive(:license_key).and_return('mit')
+ allow(project.repository).to receive(:license).and_return(
+ ::Gitlab::Git::DeclaredLicense.new(name: 'MIT License'))
expect(presenter.license_short_name).to eq('MIT License')
end
@@ -24,7 +26,7 @@ RSpec.describe ProjectPresenter do
context 'when project.repository has no license_key but a license_blob' do
it 'returns LICENSE' do
- allow(project.repository).to receive(:license_key).and_return(nil)
+ allow(project.repository).to receive(:license).and_return(nil)
expect(presenter.license_short_name).to eq('LICENSE')
end
diff --git a/spec/presenters/projects/security/configuration_presenter_spec.rb b/spec/presenters/projects/security/configuration_presenter_spec.rb
index 05e5a9d4f1d..ca7f96b567d 100644
--- a/spec/presenters/projects/security/configuration_presenter_spec.rb
+++ b/spec/presenters/projects/security/configuration_presenter_spec.rb
@@ -6,9 +6,8 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
include Gitlab::Routing.url_helpers
using RSpec::Parameterized::TableSyntax
- let(:project_with_repo) { create(:project, :repository) }
- let(:project_with_no_repo) { create(:project) }
- let(:current_user) { create(:user) }
+ let_it_be(:current_user) { build_stubbed(:user) }
+
let(:presenter) { described_class.new(project, current_user: current_user) }
before do
@@ -19,9 +18,9 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
subject(:html_data) { presenter.to_html_data_attribute }
context 'when latest default branch pipeline`s source is not auto devops' do
- let(:project) { project_with_repo }
+ let_it_be(:project) { create(:project, :repository) }
- let(:pipeline) do
+ let_it_be(:pipeline) do
create(
:ci_pipeline,
project: project,
@@ -119,6 +118,16 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
context 'when the job has more than one report' do
let(:features) { Gitlab::Json.parse(html_data[:features]) }
+ let(:project) { create(:project, :repository) }
+
+ let(:pipeline) do
+ create(
+ :ci_pipeline,
+ project: project,
+ ref: project.default_branch,
+ sha: project.commit.sha
+ )
+ end
let!(:artifacts) do
{ artifacts: { reports: { other_job: ['gl-other-report.json'], sast: ['gl-sast-report.json'] } } }
@@ -161,6 +170,8 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
end
context "while retrieving information about gitlab ci file" do
+ let(:project) { create(:project, :repository) }
+
context 'when a .gitlab-ci.yml file exists' do
let!(:ci_config) do
project.repository.create_file(
@@ -189,7 +200,7 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
end
context 'when the project is empty' do
- let(:project) { project_with_no_repo }
+ let(:project) { create(:project) }
it 'includes a blank gitlab_ci history path' do
expect(html_data[:gitlab_ci_history_path]).to eq('')
@@ -197,7 +208,7 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
end
context 'when the project has no default branch set' do
- let(:project) { project_with_repo }
+ let(:project) { create(:project, :repository) }
it 'includes the path to gitlab_ci history' do
allow(project).to receive(:default_branch).and_return(nil)
@@ -207,9 +218,9 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
end
context "when the latest default branch pipeline's source is auto devops" do
- let(:project) { project_with_repo }
+ let_it_be(:project) { create(:project, :repository) }
- let(:pipeline) do
+ let_it_be(:pipeline) do
create(
:ci_pipeline,
:auto_devops_source,
@@ -256,7 +267,7 @@ RSpec.describe Projects::Security::ConfigurationPresenter do
end
context 'when the project has no default branch pipeline' do
- let(:project) { project_with_repo }
+ let_it_be(:project) { create(:project, :repository) }
it 'reports that auto devops is disabled' do
expect(html_data[:auto_devops_enabled]).to be_falsy