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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-09 15:08:03 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-09 15:08:03 +0300
commitcddaddb86bf6d4d277d206c42a9138a2d660ea56 (patch)
tree92da110e04602b7ea62835e41327e552150279f5 /spec/presenters
parent5afd8575506372dd64c238203bd05b4826f3ae2e (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/presenters')
-rw-r--r--spec/presenters/project_presenter_spec.rb82
-rw-r--r--spec/presenters/release_presenter_spec.rb24
2 files changed, 95 insertions, 11 deletions
diff --git a/spec/presenters/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb
index 318024bacd6..09ca106c54c 100644
--- a/spec/presenters/project_presenter_spec.rb
+++ b/spec/presenters/project_presenter_spec.rb
@@ -4,11 +4,10 @@ require 'spec_helper'
describe ProjectPresenter do
let(:user) { create(:user) }
+ let(:project) { create(:project) }
+ let(:presenter) { described_class.new(project, current_user: user) }
describe '#license_short_name' do
- let(:project) { create(:project) }
- let(:presenter) { described_class.new(project, current_user: user) }
-
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')
@@ -33,8 +32,6 @@ describe ProjectPresenter do
end
describe '#default_view' do
- let(:presenter) { described_class.new(project, current_user: user) }
-
context 'user not signed in' do
let(:user) { nil }
@@ -125,7 +122,6 @@ describe ProjectPresenter do
describe '#can_current_user_push_code?' do
let(:project) { create(:project, :repository) }
- let(:presenter) { described_class.new(project, current_user: user) }
context 'empty repo' do
let(:project) { create(:project) }
@@ -163,7 +159,6 @@ describe ProjectPresenter do
context 'statistics anchors (empty repo)' do
let(:project) { create(:project, :empty_repo) }
- let(:presenter) { described_class.new(project, current_user: user) }
describe '#files_anchor_data' do
it 'returns files data' do
@@ -200,7 +195,6 @@ describe ProjectPresenter do
context 'statistics anchors' do
let(:project) { create(:project, :repository) }
- let(:presenter) { described_class.new(project, current_user: user) }
describe '#files_anchor_data' do
it 'returns files data' do
@@ -416,7 +410,6 @@ describe ProjectPresenter do
describe '#statistics_buttons' do
let(:project) { build(:project) }
- let(:presenter) { described_class.new(project, current_user: user) }
it 'orders the items correctly' do
allow(project.repository).to receive(:readme).and_return(double(name: 'readme'))
@@ -435,8 +428,6 @@ describe ProjectPresenter do
end
describe '#repo_statistics_buttons' do
- let(:presenter) { described_class.new(project, current_user: user) }
-
subject(:empty_repo_statistics_buttons) { presenter.empty_repo_statistics_buttons }
before do
@@ -485,4 +476,73 @@ describe ProjectPresenter do
end
end
end
+
+ describe '#can_setup_review_app?' do
+ subject { presenter.can_setup_review_app? }
+
+ context 'when the ci/cd file is missing' do
+ before do
+ allow(presenter).to receive(:cicd_missing?).and_return(true)
+ end
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'when the ci/cd file is not missing' do
+ before do
+ allow(presenter).to receive(:cicd_missing?).and_return(false)
+ end
+
+ context 'and the user can create a cluster' do
+ before do
+ allow(Ability).to receive(:allowed?).and_call_original
+ allow(Ability).to receive(:allowed?).with(user, :create_cluster, project).and_return(true)
+ end
+
+ context 'and there is no cluster associated to this project' do
+ let(:project) { create(:project, clusters: []) }
+
+ it { is_expected.to be_truthy }
+ end
+
+ context 'and there is already a cluster associated to this project' do
+ let(:project) { create(:project, clusters: [build(:cluster, :providing_by_gcp)]) }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when a group cluster is instantiated' do
+ let_it_be(:cluster) { create(:cluster, :group) }
+ let_it_be(:group) { cluster.group }
+
+ context 'and the project belongs to this group' do
+ let!(:project) { create(:project, group: group) }
+
+ it { is_expected.to be_falsey }
+ end
+
+ context 'and the project does not belong to this group' do
+ it { is_expected.to be_truthy }
+ end
+ end
+
+ context 'and there is already an instance cluster' do
+ it 'is false' do
+ create(:cluster, :instance)
+
+ is_expected.to be_falsey
+ end
+ end
+ end
+
+ context 'and the user cannot create a cluster' do
+ before do
+ allow(Ability).to receive(:allowed?).and_call_original
+ allow(Ability).to receive(:allowed?).with(user, :create_cluster, project).and_return(false)
+ end
+
+ it { is_expected.to be_falsey }
+ end
+ end
+ end
end
diff --git a/spec/presenters/release_presenter_spec.rb b/spec/presenters/release_presenter_spec.rb
index 2f978b0a036..4c6142f2edb 100644
--- a/spec/presenters/release_presenter_spec.rb
+++ b/spec/presenters/release_presenter_spec.rb
@@ -96,4 +96,28 @@ describe ReleasePresenter do
it { is_expected.to be_nil }
end
end
+
+ describe '#evidence_file_path' do
+ subject { presenter.evidence_file_path }
+
+ context 'without evidence' do
+ it { is_expected.to be_falsy }
+ end
+
+ context 'with evidence' do
+ let(:release) { create :release, :with_evidence, project: project }
+
+ specify do
+ is_expected.to match /#{evidence_project_release_url(project, release.tag, format: :json)}/
+ end
+ end
+
+ context 'when a tag contains a slash' do
+ let(:release) { create :release, :with_evidence, project: project, tag: 'debian/2.4.0-1' }
+
+ specify do
+ is_expected.to match /#{evidence_project_release_url(project, CGI.escape(release.tag), format: :json)}/
+ end
+ end
+ end
end