diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-09 12:08:03 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-09 12:08:03 +0000 |
commit | cddaddb86bf6d4d277d206c42a9138a2d660ea56 (patch) | |
tree | 92da110e04602b7ea62835e41327e552150279f5 /spec/presenters | |
parent | 5afd8575506372dd64c238203bd05b4826f3ae2e (diff) | |
download | gitlab-ce-cddaddb86bf6d4d277d206c42a9138a2d660ea56.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/presenters')
-rw-r--r-- | spec/presenters/project_presenter_spec.rb | 82 | ||||
-rw-r--r-- | spec/presenters/release_presenter_spec.rb | 24 |
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 |