diff options
Diffstat (limited to 'spec/serializers/ci')
5 files changed, 61 insertions, 16 deletions
diff --git a/spec/serializers/ci/codequality_mr_diff_entity_spec.rb b/spec/serializers/ci/codequality_mr_diff_entity_spec.rb index 82708908d95..4f161c36b06 100644 --- a/spec/serializers/ci/codequality_mr_diff_entity_spec.rb +++ b/spec/serializers/ci/codequality_mr_diff_entity_spec.rb @@ -4,18 +4,18 @@ require 'spec_helper' RSpec.describe Ci::CodequalityMrDiffEntity do let(:entity) { described_class.new(mr_diff_report) } - let(:mr_diff_report) { Gitlab::Ci::Reports::CodequalityMrDiff.new(codequality_report) } + let(:mr_diff_report) { Gitlab::Ci::Reports::CodequalityMrDiff.new(codequality_report.all_degradations) } let(:codequality_report) { Gitlab::Ci::Reports::CodequalityReports.new } - let(:degradation_1) { build(:codequality_degradation_1) } - let(:degradation_2) { build(:codequality_degradation_2) } + let(:major) { build(:codequality_degradation, :major) } + let(:minor) { build(:codequality_degradation, :minor) } describe '#as_json' do subject(:report) { entity.as_json } context 'when quality report has degradations' do before do - codequality_report.add_degradation(degradation_1) - codequality_report.add_degradation(degradation_2) + codequality_report.add_degradation(major) + codequality_report.add_degradation(minor) end it 'contains correct codequality mr diff report', :aggregate_failures do diff --git a/spec/serializers/ci/codequality_mr_diff_report_serializer_spec.rb b/spec/serializers/ci/codequality_mr_diff_report_serializer_spec.rb index 906ca36041f..6afbc3b8353 100644 --- a/spec/serializers/ci/codequality_mr_diff_report_serializer_spec.rb +++ b/spec/serializers/ci/codequality_mr_diff_report_serializer_spec.rb @@ -4,18 +4,18 @@ require 'spec_helper' RSpec.describe Ci::CodequalityMrDiffReportSerializer do let(:serializer) { described_class.new.represent(mr_diff_report) } - let(:mr_diff_report) { Gitlab::Ci::Reports::CodequalityMrDiff.new(codequality_report) } + let(:mr_diff_report) { Gitlab::Ci::Reports::CodequalityMrDiff.new(codequality_report.all_degradations) } let(:codequality_report) { Gitlab::Ci::Reports::CodequalityReports.new } - let(:degradation_1) { build(:codequality_degradation_1) } - let(:degradation_2) { build(:codequality_degradation_2) } + let(:major) { build(:codequality_degradation, :major) } + let(:minor) { build(:codequality_degradation, :minor) } describe '#to_json' do subject { serializer.as_json } context 'when quality report has degradations' do before do - codequality_report.add_degradation(degradation_1) - codequality_report.add_degradation(degradation_2) + codequality_report.add_degradation(major) + codequality_report.add_degradation(minor) end it 'matches the schema' do diff --git a/spec/serializers/ci/downloadable_artifact_entity_spec.rb b/spec/serializers/ci/downloadable_artifact_entity_spec.rb new file mode 100644 index 00000000000..34a271e7422 --- /dev/null +++ b/spec/serializers/ci/downloadable_artifact_entity_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Ci::DownloadableArtifactEntity do + let(:pipeline) { create(:ci_pipeline, :with_codequality_reports) } + let(:user) { create(:user) } + let(:request) { EntityRequest.new({ current_user: user }) } + let(:entity) { described_class.new(pipeline, request: request) } + + describe '#as_json' do + subject { entity.as_json } + + it 'contains required fields', :aggregate_failures do + expect(subject).to include(:artifacts) + expect(subject[:artifacts].size).to eq(1) + end + + context 'when user cannot read job artifact' do + let!(:build) { create(:ci_build, :success, :artifacts, :non_public_artifacts, pipeline: pipeline) } + + it 'returns only artifacts readable by user', :aggregate_failures do + expect(subject[:artifacts].size).to eq(1) + expect(subject[:artifacts].first[:name]).to eq("test:codequality") + end + end + end +end diff --git a/spec/serializers/ci/downloadable_artifact_serializer_spec.rb b/spec/serializers/ci/downloadable_artifact_serializer_spec.rb new file mode 100644 index 00000000000..90f159a06f9 --- /dev/null +++ b/spec/serializers/ci/downloadable_artifact_serializer_spec.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Ci::DownloadableArtifactSerializer do + let(:pipeline) { create(:ci_pipeline, :with_codequality_reports) } + let(:user) { create(:user) } + let(:serializer) { described_class.new(current_user: user).represent(pipeline) } + + describe '#as_json' do + subject { serializer.as_json } + + it 'matches schema' do + expect(subject).to match_schema('entities/downloadable_artifact') + end + end +end diff --git a/spec/serializers/ci/pipeline_entity_spec.rb b/spec/serializers/ci/pipeline_entity_spec.rb index 83ea0d649e8..054406e4e65 100644 --- a/spec/serializers/ci/pipeline_entity_spec.rb +++ b/spec/serializers/ci/pipeline_entity_spec.rb @@ -155,7 +155,7 @@ RSpec.describe Ci::PipelineEntity do it 'has a correct failure reason' do expect(subject[:failure_reason]) - .to eq 'CI/CD YAML configuration error!' + .to eq 'The pipeline failed due to an error on the CI/CD configuration file.' end end @@ -239,23 +239,23 @@ RSpec.describe Ci::PipelineEntity do end context 'when pipeline has failed builds' do - let_it_be(:pipeline) { create(:ci_pipeline, user: user) } + let_it_be(:pipeline) { create(:ci_pipeline, project: project, user: user) } let_it_be(:build) { create(:ci_build, :success, pipeline: pipeline) } let_it_be(:failed_1) { create(:ci_build, :failed, pipeline: pipeline) } let_it_be(:failed_2) { create(:ci_build, :failed, pipeline: pipeline) } context 'when the user can retry the pipeline' do - it 'exposes these failed builds' do - allow(entity).to receive(:can_retry?).and_return(true) + before do + project.add_maintainer(user) + end + it 'exposes these failed builds' do expect(subject[:failed_builds].map { |b| b[:id] }).to contain_exactly(failed_1.id, failed_2.id) end end context 'when the user cannot retry the pipeline' do it 'is nil' do - allow(entity).to receive(:can_retry?).and_return(false) - expect(subject[:failed_builds]).to be_nil end end |