diff options
Diffstat (limited to 'spec/presenters')
-rw-r--r-- | spec/presenters/blobs/unfold_presenter_spec.rb | 20 | ||||
-rw-r--r-- | spec/presenters/ci/build_runner_presenter_spec.rb | 17 | ||||
-rw-r--r-- | spec/presenters/commit_presenter_spec.rb | 5 | ||||
-rw-r--r-- | spec/presenters/deploy_key_presenter_spec.rb | 24 | ||||
-rw-r--r-- | spec/presenters/event_presenter_spec.rb | 8 | ||||
-rw-r--r-- | spec/presenters/key_presenter_spec.rb | 32 | ||||
-rw-r--r-- | spec/presenters/project_presenter_spec.rb | 8 | ||||
-rw-r--r-- | spec/presenters/projects/security/configuration_presenter_spec.rb | 31 |
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 |