summaryrefslogtreecommitdiff
path: root/spec/presenters/commit_presenter_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-08-30 18:09:50 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-08-30 18:09:50 +0000
commit6619ed911ffab93b90756bf392d2925fdc0c1ee2 (patch)
tree79d122438dd8e1cb672f8bb52b9d573bd49bdd77 /spec/presenters/commit_presenter_spec.rb
parent4b1fc3dc32e768499d81ed64ea7ed497c1785c48 (diff)
downloadgitlab-ce-6619ed911ffab93b90756bf392d2925fdc0c1ee2.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/presenters/commit_presenter_spec.rb')
-rw-r--r--spec/presenters/commit_presenter_spec.rb50
1 files changed, 36 insertions, 14 deletions
diff --git a/spec/presenters/commit_presenter_spec.rb b/spec/presenters/commit_presenter_spec.rb
index b221c9ca8f7..df3ee69621b 100644
--- a/spec/presenters/commit_presenter_spec.rb
+++ b/spec/presenters/commit_presenter_spec.rb
@@ -12,29 +12,51 @@ RSpec.describe CommitPresenter do
it { expect(presenter.web_path).to eq("/#{project.full_path}/-/commit/#{commit.sha}") }
end
- describe '#status_for' do
- subject { presenter.status_for('ref') }
+ describe '#detailed_status_for' do
+ using RSpec::Parameterized::TableSyntax
+
+ let(:pipeline) { create(:ci_pipeline, :success, project: project, sha: commit.sha, ref: 'ref') }
- context 'when user can read_commit_status' do
+ subject { presenter.detailed_status_for('ref')&.text }
+
+ where(:read_commit_status, :read_pipeline, :expected_result) do
+ true | true | 'passed'
+ true | false | nil
+ false | true | nil
+ false | false | nil
+ end
+
+ with_them do
before do
- allow(presenter).to receive(:can?).with(user, :read_commit_status, project).and_return(true)
+ allow(presenter).to receive(:can?).with(user, :read_commit_status, project).and_return(read_commit_status)
+ allow(presenter).to receive(:can?).with(user, :read_pipeline, pipeline).and_return(read_pipeline)
end
- it 'returns commit status for ref' do
- pipeline = double
- status = double
+ it { is_expected.to eq expected_result }
+ end
+ end
- expect(commit).to receive(:latest_pipeline).with('ref').and_return(pipeline)
- expect(pipeline).to receive(:detailed_status).with(user).and_return(status)
+ describe '#status_for' do
+ using RSpec::Parameterized::TableSyntax
- expect(subject).to eq(status)
- end
+ let(:pipeline) { create(:ci_pipeline, :success, project: project, sha: commit.sha) }
+
+ subject { presenter.status_for }
+
+ where(:read_commit_status, :read_pipeline, :expected_result) do
+ true | true | 'success'
+ true | false | nil
+ false | true | nil
+ false | false | nil
end
- context 'when user can not read_commit_status' do
- it 'is nil' do
- is_expected.to eq(nil)
+ with_them do
+ before do
+ allow(presenter).to receive(:can?).with(user, :read_commit_status, project).and_return(read_commit_status)
+ allow(presenter).to receive(:can?).with(user, :read_pipeline, pipeline).and_return(read_pipeline)
end
+
+ it { is_expected.to eq expected_result }
end
end