diff options
Diffstat (limited to 'spec/serializers')
75 files changed, 552 insertions, 13 deletions
diff --git a/spec/serializers/analytics_build_entity_spec.rb b/spec/serializers/analytics_build_entity_spec.rb index 1ff4908972a..dfa16075d20 100644 --- a/spec/serializers/analytics_build_entity_spec.rb +++ b/spec/serializers/analytics_build_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsBuildEntity do diff --git a/spec/serializers/analytics_build_serializer_spec.rb b/spec/serializers/analytics_build_serializer_spec.rb index e3b1dd93dc2..04a387fd353 100644 --- a/spec/serializers/analytics_build_serializer_spec.rb +++ b/spec/serializers/analytics_build_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsBuildSerializer do diff --git a/spec/serializers/analytics_issue_entity_spec.rb b/spec/serializers/analytics_issue_entity_spec.rb index c5b03bdd8c1..555efe136e6 100644 --- a/spec/serializers/analytics_issue_entity_spec.rb +++ b/spec/serializers/analytics_issue_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsIssueEntity do diff --git a/spec/serializers/analytics_issue_serializer_spec.rb b/spec/serializers/analytics_issue_serializer_spec.rb index 9cb2ce13d12..9b29739a8f2 100644 --- a/spec/serializers/analytics_issue_serializer_spec.rb +++ b/spec/serializers/analytics_issue_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsIssueSerializer do diff --git a/spec/serializers/analytics_merge_request_serializer_spec.rb b/spec/serializers/analytics_merge_request_serializer_spec.rb index a864051b2a3..c82eb28a28b 100644 --- a/spec/serializers/analytics_merge_request_serializer_spec.rb +++ b/spec/serializers/analytics_merge_request_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsMergeRequestSerializer do diff --git a/spec/serializers/analytics_stage_serializer_spec.rb b/spec/serializers/analytics_stage_serializer_spec.rb index 86a796a2d94..1f1a0180b1f 100644 --- a/spec/serializers/analytics_stage_serializer_spec.rb +++ b/spec/serializers/analytics_stage_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsStageSerializer do diff --git a/spec/serializers/analytics_summary_serializer_spec.rb b/spec/serializers/analytics_summary_serializer_spec.rb index 8fa0574bfd6..33a41706794 100644 --- a/spec/serializers/analytics_summary_serializer_spec.rb +++ b/spec/serializers/analytics_summary_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe AnalyticsSummarySerializer do diff --git a/spec/serializers/blob_entity_spec.rb b/spec/serializers/blob_entity_spec.rb index dde59ff72df..c0687d0232e 100644 --- a/spec/serializers/blob_entity_spec.rb +++ b/spec/serializers/blob_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe BlobEntity do diff --git a/spec/serializers/build_action_entity_spec.rb b/spec/serializers/build_action_entity_spec.rb index ea88951ebc6..7cd1fdcda22 100644 --- a/spec/serializers/build_action_entity_spec.rb +++ b/spec/serializers/build_action_entity_spec.rb @@ -1,11 +1,18 @@ +# frozen_string_literal: true + require 'spec_helper' describe BuildActionEntity do let(:job) { create(:ci_build, name: 'test_job') } let(:request) { double('request') } + let(:user) { create(:user) } let(:entity) do - described_class.new(job, request: spy('request')) + described_class.new(job, request: request) + end + + before do + allow(request).to receive(:current_user).and_return(user) end describe '#as_json' do diff --git a/spec/serializers/build_artifact_entity_spec.rb b/spec/serializers/build_artifact_entity_spec.rb index ad0d3d3839e..09fe094fff1 100644 --- a/spec/serializers/build_artifact_entity_spec.rb +++ b/spec/serializers/build_artifact_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe BuildArtifactEntity do diff --git a/spec/serializers/build_details_entity_spec.rb b/spec/serializers/build_details_entity_spec.rb index d922e8246c7..91c5fd6bf2c 100644 --- a/spec/serializers/build_details_entity_spec.rb +++ b/spec/serializers/build_details_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe BuildDetailsEntity do @@ -121,6 +123,25 @@ describe BuildDetailsEntity do end it { is_expected.to include(failure_reason: 'unmet_prerequisites') } + it { is_expected.to include(callout_message: CommitStatusPresenter.callout_failure_messages[:unmet_prerequisites]) } + end + + context 'when the build has failed due to a missing dependency' do + let!(:test1) { create(:ci_build, :success, :expired, pipeline: pipeline, name: 'test1', stage_idx: 0) } + let!(:test2) { create(:ci_build, :success, :expired, pipeline: pipeline, name: 'test2', stage_idx: 1) } + let!(:build) { create(:ci_build, :pending, pipeline: pipeline, stage_idx: 2, options: { dependencies: %w(test1 test2) }) } + let(:message) { subject[:callout_message] } + + before do + build.drop!(:missing_dependency_failure) + end + + it { is_expected.to include(failure_reason: 'missing_dependency_failure') } + + it 'includes the failing dependencies in the callout message' do + expect(message).to include('test1') + expect(message).to include('test2') + end end context 'when a build has environment with latest deployment' do diff --git a/spec/serializers/build_serializer_spec.rb b/spec/serializers/build_serializer_spec.rb index 302ef147eb2..c7bb6864361 100644 --- a/spec/serializers/build_serializer_spec.rb +++ b/spec/serializers/build_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe BuildSerializer do diff --git a/spec/serializers/build_trace_entity_spec.rb b/spec/serializers/build_trace_entity_spec.rb new file mode 100644 index 00000000000..bafead04a51 --- /dev/null +++ b/spec/serializers/build_trace_entity_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe BuildTraceEntity do + let(:build) { build_stubbed(:ci_build) } + let(:request) { double('request') } + + let(:stream) do + Gitlab::Ci::Trace::Stream.new do + StringIO.new('the-trace') + end + end + + let(:build_trace) do + Ci::BuildTrace.new(build: build, stream: stream, content_format: content_format, state: nil) + end + + let(:entity) do + described_class.new(build_trace, request: request) + end + + subject { entity.as_json } + + shared_examples 'includes build and trace metadata' do + it 'includes build attributes' do + expect(subject[:id]).to eq(build.id) + expect(subject[:status]).to eq(build.status) + expect(subject[:complete]).to eq(build.complete?) + end + + it 'includes trace metadata' do + expect(subject).to include(:state) + expect(subject).to include(:append) + expect(subject).to include(:truncated) + expect(subject).to include(:offset) + expect(subject).to include(:size) + expect(subject).to include(:total) + end + end + + context 'when content format is :json' do + let(:content_format) { :json } + + it_behaves_like 'includes build and trace metadata' + + it 'includes the trace content in json' do + expect(subject[:lines]).to eq([ + { offset: 0, content: [{ text: 'the-trace' }] } + ]) + end + end + + context 'when content format is :html' do + let(:content_format) { :html } + + it_behaves_like 'includes build and trace metadata' + + it 'includes the trace content in json' do + expect(subject[:html]).to eq('<span>the-trace</span>') + end + end +end diff --git a/spec/serializers/cluster_application_entity_spec.rb b/spec/serializers/cluster_application_entity_spec.rb index 76ecca06522..cb9325986d7 100644 --- a/spec/serializers/cluster_application_entity_spec.rb +++ b/spec/serializers/cluster_application_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ClusterApplicationEntity do diff --git a/spec/serializers/cluster_basic_entity_spec.rb b/spec/serializers/cluster_basic_entity_spec.rb index 6762eb6ab3d..be03ee91784 100644 --- a/spec/serializers/cluster_basic_entity_spec.rb +++ b/spec/serializers/cluster_basic_entity_spec.rb @@ -1,8 +1,11 @@ +# frozen_string_literal: true + require 'spec_helper' describe ClusterBasicEntity do describe '#as_json' do subject { described_class.new(cluster, request: request).as_json } + let(:maintainer) { create(:user) } let(:developer) { create(:user) } let(:current_user) { maintainer } diff --git a/spec/serializers/cluster_entity_spec.rb b/spec/serializers/cluster_entity_spec.rb index d6a43fd0f00..22b9166f922 100644 --- a/spec/serializers/cluster_entity_spec.rb +++ b/spec/serializers/cluster_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ClusterEntity do diff --git a/spec/serializers/cluster_serializer_spec.rb b/spec/serializers/cluster_serializer_spec.rb index 5e9f7a45891..db0e65ca0fa 100644 --- a/spec/serializers/cluster_serializer_spec.rb +++ b/spec/serializers/cluster_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ClusterSerializer do diff --git a/spec/serializers/commit_entity_spec.rb b/spec/serializers/commit_entity_spec.rb index b9995818e98..03e1c89a5e6 100644 --- a/spec/serializers/commit_entity_spec.rb +++ b/spec/serializers/commit_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe CommitEntity do diff --git a/spec/serializers/container_repository_entity_spec.rb b/spec/serializers/container_repository_entity_spec.rb index 15466bce514..799a8d5c122 100644 --- a/spec/serializers/container_repository_entity_spec.rb +++ b/spec/serializers/container_repository_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ContainerRepositoryEntity do @@ -23,6 +25,18 @@ describe ContainerRepositoryEntity do expect(subject).to include(:id, :path, :location, :tags_path) end + context 'when project is not preset in the request' do + before do + allow(request).to receive(:respond_to?).and_return(false) + allow(request).to receive(:project).and_return(nil) + end + + it 'uses project from the object' do + expect(request.project).not_to equal(project) + expect(subject).to include(:tags_path) + end + end + context 'when user can manage repositories' do before do project.add_developer(user) diff --git a/spec/serializers/container_tag_entity_spec.rb b/spec/serializers/container_tag_entity_spec.rb index ceb828a1cc5..8a67a189761 100644 --- a/spec/serializers/container_tag_entity_spec.rb +++ b/spec/serializers/container_tag_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ContainerTagEntity do diff --git a/spec/serializers/deploy_key_entity_spec.rb b/spec/serializers/deploy_key_entity_spec.rb index 01264cf7fb5..607adfc2488 100644 --- a/spec/serializers/deploy_key_entity_spec.rb +++ b/spec/serializers/deploy_key_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DeployKeyEntity do @@ -6,14 +8,15 @@ describe DeployKeyEntity do let(:user) { create(:user) } let(:project) { create(:project, :internal)} let(:project_private) { create(:project, :private)} - let!(:project_pending_delete) { create(:project, :internal, pending_delete: true) } let(:deploy_key) { create(:deploy_key) } - let!(:deploy_key_internal) { create(:deploy_keys_project, project: project, deploy_key: deploy_key) } - let!(:deploy_key_private) { create(:deploy_keys_project, project: project_private, deploy_key: deploy_key) } - let!(:deploy_key_pending_delete) { create(:deploy_keys_project, project: project_pending_delete, deploy_key: deploy_key) } let(:entity) { described_class.new(deploy_key, user: user) } + before do + project.deploy_keys << deploy_key + project_private.deploy_keys << deploy_key + end + describe 'returns deploy keys with projects a user can read' do let(:expected_result) do { @@ -44,17 +47,30 @@ describe DeployKeyEntity do it { expect(entity.as_json).to eq(expected_result) } end - describe 'returns can_edit true if user is a maintainer of project' do + context 'user is an admin' do + let(:user) { create(:user, :admin) } + + it { expect(entity.as_json).to include(can_edit: true) } + end + + context 'user is a project maintainer' do before do project.add_maintainer(user) end - it { expect(entity.as_json).to include(can_edit: true) } - end + context 'project deploy key' do + it { expect(entity.as_json).to include(can_edit: true) } + end - describe 'returns can_edit true if a user admin' do - let(:user) { create(:user, :admin) } + context 'public deploy key' do + let(:deploy_key_public) { create(:deploy_key, public: true) } + let(:entity_public) { described_class.new(deploy_key_public, { user: user, project: project }) } - it { expect(entity.as_json).to include(can_edit: true) } + before do + project.deploy_keys << deploy_key_public + end + + it { expect(entity_public.as_json).to include(can_edit: true) } + end end end diff --git a/spec/serializers/deployment_entity_spec.rb b/spec/serializers/deployment_entity_spec.rb index 79f89dc1a9c..d7816a3503d 100644 --- a/spec/serializers/deployment_entity_spec.rb +++ b/spec/serializers/deployment_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DeploymentEntity do diff --git a/spec/serializers/detailed_status_entity_spec.rb b/spec/serializers/detailed_status_entity_spec.rb index 62f57ca8689..a4b51f1e02e 100644 --- a/spec/serializers/detailed_status_entity_spec.rb +++ b/spec/serializers/detailed_status_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DetailedStatusEntity do diff --git a/spec/serializers/diff_file_entity_spec.rb b/spec/serializers/diff_file_entity_spec.rb index 92b649f5b6c..0c2e7c1e3eb 100644 --- a/spec/serializers/diff_file_entity_spec.rb +++ b/spec/serializers/diff_file_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DiffFileEntity do diff --git a/spec/serializers/diff_line_serializer_spec.rb b/spec/serializers/diff_line_serializer_spec.rb index 6dd8abd0579..bdfcb8e2459 100644 --- a/spec/serializers/diff_line_serializer_spec.rb +++ b/spec/serializers/diff_line_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DiffLineSerializer do diff --git a/spec/serializers/diff_viewer_entity_spec.rb b/spec/serializers/diff_viewer_entity_spec.rb index 66ac6ef2adc..76d2728c597 100644 --- a/spec/serializers/diff_viewer_entity_spec.rb +++ b/spec/serializers/diff_viewer_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DiffViewerEntity do diff --git a/spec/serializers/diffs_entity_spec.rb b/spec/serializers/diffs_entity_spec.rb index 19a843b0cb7..59acbdac3d0 100644 --- a/spec/serializers/diffs_entity_spec.rb +++ b/spec/serializers/diffs_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DiffsEntity do diff --git a/spec/serializers/diffs_metadata_entity_spec.rb b/spec/serializers/diffs_metadata_entity_spec.rb new file mode 100644 index 00000000000..aaca393ec27 --- /dev/null +++ b/spec/serializers/diffs_metadata_entity_spec.rb @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe DiffsMetadataEntity do + let(:user) { create(:user) } + let(:project) { create(:project, :repository) } + let(:request) { EntityRequest.new(project: project, current_user: user) } + let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } + let(:merge_request_diffs) { merge_request.merge_request_diffs } + let(:merge_request_diff) { merge_request_diffs.last } + + let(:entity) do + described_class.new(merge_request_diff.diffs, + request: request, + merge_request: merge_request, + merge_request_diffs: merge_request_diffs) + end + + context 'as json' do + subject { entity.as_json } + + it 'contain only required attributes' do + expect(subject.keys).to contain_exactly( + # Inherited attributes + :real_size, :size, :branch_name, + :target_branch_name, :commit, :merge_request_diff, + :start_version, :latest_diff, :latest_version_path, + :added_lines, :removed_lines, :render_overflow_warning, + :email_patch_path, :plain_diff_path, + :merge_request_diffs, + # Attributes + :diff_files + ) + end + + describe 'diff_files' do + it 'returns diff files metadata' do + payload = + DiffFileMetadataEntity.represent(merge_request_diff.diffs.diff_files).as_json + + expect(subject[:diff_files]).to eq(payload) + end + end + end +end diff --git a/spec/serializers/discussion_entity_spec.rb b/spec/serializers/discussion_entity_spec.rb index 138749b0fdf..b194623099d 100644 --- a/spec/serializers/discussion_entity_spec.rb +++ b/spec/serializers/discussion_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe DiscussionEntity do diff --git a/spec/serializers/entity_date_helper_spec.rb b/spec/serializers/entity_date_helper_spec.rb index 73506954965..6f99074c3a2 100644 --- a/spec/serializers/entity_date_helper_spec.rb +++ b/spec/serializers/entity_date_helper_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe EntityDateHelper do diff --git a/spec/serializers/entity_request_spec.rb b/spec/serializers/entity_request_spec.rb index 86654adfd54..947c4b165d3 100644 --- a/spec/serializers/entity_request_spec.rb +++ b/spec/serializers/entity_request_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe EntityRequest do diff --git a/spec/serializers/environment_entity_spec.rb b/spec/serializers/environment_entity_spec.rb index 906449f470b..b8910fd6eee 100644 --- a/spec/serializers/environment_entity_spec.rb +++ b/spec/serializers/environment_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe EnvironmentEntity do diff --git a/spec/serializers/environment_serializer_spec.rb b/spec/serializers/environment_serializer_spec.rb index 375a28a8c72..304457d83a1 100644 --- a/spec/serializers/environment_serializer_spec.rb +++ b/spec/serializers/environment_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe EnvironmentSerializer do diff --git a/spec/serializers/environment_status_entity_spec.rb b/spec/serializers/environment_status_entity_spec.rb index cb4749f019f..0687751fd67 100644 --- a/spec/serializers/environment_status_entity_spec.rb +++ b/spec/serializers/environment_status_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe EnvironmentStatusEntity do diff --git a/spec/serializers/evidences/evidence_entity_spec.rb b/spec/serializers/evidences/evidence_entity_spec.rb new file mode 100644 index 00000000000..531708e3be6 --- /dev/null +++ b/spec/serializers/evidences/evidence_entity_spec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::EvidenceEntity do + let(:evidence) { build(:evidence) } + let(:entity) { described_class.new(evidence) } + + subject { entity.as_json } + + it 'exposes the expected fields' do + expect(subject.keys).to contain_exactly(:release) + end +end diff --git a/spec/serializers/evidences/evidence_serializer_spec.rb b/spec/serializers/evidences/evidence_serializer_spec.rb new file mode 100644 index 00000000000..5322f6a43fc --- /dev/null +++ b/spec/serializers/evidences/evidence_serializer_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::EvidenceSerializer do + it 'represents an EvidenceEntity entity' do + expect(described_class.entity_class).to eq(Evidences::EvidenceEntity) + end +end diff --git a/spec/serializers/evidences/issue_entity_spec.rb b/spec/serializers/evidences/issue_entity_spec.rb new file mode 100644 index 00000000000..915df986887 --- /dev/null +++ b/spec/serializers/evidences/issue_entity_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::IssueEntity do + let(:entity) { described_class.new(build(:issue)) } + + subject { entity.as_json } + + it 'exposes the expected fields' do + expect(subject.keys).to contain_exactly(:id, :title, :description, :state, :iid, :confidential, :created_at, :due_date) + end +end diff --git a/spec/serializers/evidences/milestone_entity_spec.rb b/spec/serializers/evidences/milestone_entity_spec.rb new file mode 100644 index 00000000000..68eb12093da --- /dev/null +++ b/spec/serializers/evidences/milestone_entity_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::MilestoneEntity do + let(:milestone) { build(:milestone) } + let(:entity) { described_class.new(milestone) } + + subject { entity.as_json } + + it 'exposes the expected fields' do + expect(subject.keys).to contain_exactly(:id, :title, :description, :state, :iid, :created_at, :due_date, :issues) + end + + context 'when there are issues linked to this milestone' do + let(:issue_1) { build(:issue) } + let(:issue_2) { build(:issue) } + let(:milestone) { build(:milestone, issues: [issue_1, issue_2]) } + + it 'exposes these issues' do + expect(subject[:issues]).to contain_exactly( + Evidences::IssueEntity.new(issue_1).as_json, + Evidences::IssueEntity.new(issue_2).as_json + ) + end + end + + context 'when the release has no milestone' do + let(:milestone) { build(:milestone, issues: []) } + + it 'exposes an empty array for milestones' do + expect(subject[:issues]).to be_empty + end + end +end diff --git a/spec/serializers/evidences/project_entity_spec.rb b/spec/serializers/evidences/project_entity_spec.rb new file mode 100644 index 00000000000..01c160425a8 --- /dev/null +++ b/spec/serializers/evidences/project_entity_spec.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::ProjectEntity do + let(:entity) { described_class.new(build(:project)) } + + subject { entity.as_json } + + it 'exposes the expected fields' do + expect(subject.keys).to contain_exactly(:id, :name, :description, :created_at) + end +end diff --git a/spec/serializers/evidences/release_entity_spec.rb b/spec/serializers/evidences/release_entity_spec.rb new file mode 100644 index 00000000000..8e2be748169 --- /dev/null +++ b/spec/serializers/evidences/release_entity_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::ReleaseEntity do + let(:release) { build(:release) } + let(:entity) { described_class.new(release) } + + subject { entity.as_json } + + it 'exposes the expected fields' do + expect(subject.keys).to contain_exactly(:id, :tag_name, :name, :description, :created_at, :project, :milestones) + end + + context 'when the release has milestones' do + let(:project) { create(:project) } + let(:milestone_1) { build(:milestone, project: project) } + let(:milestone_2) { build(:milestone, project: project) } + let(:release) { build(:release, project: project, milestones: [milestone_1, milestone_2]) } + + it 'exposes these milestones' do + expect(subject[:milestones]).to contain_exactly( + Evidences::MilestoneEntity.new(milestone_1).as_json, + Evidences::MilestoneEntity.new(milestone_2).as_json + ) + end + end + + context 'when the release has no milestone' do + let(:release) { build(:release, milestones: []) } + + it 'exposes an empty array for milestones' do + expect(subject[:milestones]).to be_empty + end + end +end diff --git a/spec/serializers/evidences/release_serializer_spec.rb b/spec/serializers/evidences/release_serializer_spec.rb new file mode 100644 index 00000000000..a0dbf50137c --- /dev/null +++ b/spec/serializers/evidences/release_serializer_spec.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Evidences::ReleaseSerializer do + it 'represents an Evidence::ReleaseEntity entity' do + expect(described_class.entity_class).to eq(Evidences::ReleaseEntity) + end +end diff --git a/spec/serializers/group_child_entity_spec.rb b/spec/serializers/group_child_entity_spec.rb index 00e2f931549..198a55d5433 100644 --- a/spec/serializers/group_child_entity_spec.rb +++ b/spec/serializers/group_child_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe GroupChildEntity do diff --git a/spec/serializers/group_child_serializer_spec.rb b/spec/serializers/group_child_serializer_spec.rb index c9e8535585b..128e06cd172 100644 --- a/spec/serializers/group_child_serializer_spec.rb +++ b/spec/serializers/group_child_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe GroupChildSerializer do diff --git a/spec/serializers/group_variable_entity_spec.rb b/spec/serializers/group_variable_entity_spec.rb index f6de7d01f98..22c98b418dd 100644 --- a/spec/serializers/group_variable_entity_spec.rb +++ b/spec/serializers/group_variable_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe GroupVariableEntity do diff --git a/spec/serializers/issue_entity_spec.rb b/spec/serializers/issue_entity_spec.rb index 53278062de9..224ed0b402f 100644 --- a/spec/serializers/issue_entity_spec.rb +++ b/spec/serializers/issue_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe IssueEntity do diff --git a/spec/serializers/issue_serializer_spec.rb b/spec/serializers/issue_serializer_spec.rb index b8255e004d0..e25becc4709 100644 --- a/spec/serializers/issue_serializer_spec.rb +++ b/spec/serializers/issue_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe IssueSerializer do diff --git a/spec/serializers/job_entity_spec.rb b/spec/serializers/job_entity_spec.rb index 8de61d4d466..4b2d4701334 100644 --- a/spec/serializers/job_entity_spec.rb +++ b/spec/serializers/job_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe JobEntity do diff --git a/spec/serializers/label_serializer_spec.rb b/spec/serializers/label_serializer_spec.rb index c58c7da1f9e..7e1bb2cc127 100644 --- a/spec/serializers/label_serializer_spec.rb +++ b/spec/serializers/label_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe LabelSerializer do diff --git a/spec/serializers/lfs_file_lock_entity_spec.rb b/spec/serializers/lfs_file_lock_entity_spec.rb index 5919f473a90..4ffffad7d5a 100644 --- a/spec/serializers/lfs_file_lock_entity_spec.rb +++ b/spec/serializers/lfs_file_lock_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe LfsFileLockEntity do diff --git a/spec/serializers/merge_request_diff_entity_spec.rb b/spec/serializers/merge_request_diff_entity_spec.rb index 84f6833d88a..062f17963c0 100644 --- a/spec/serializers/merge_request_diff_entity_spec.rb +++ b/spec/serializers/merge_request_diff_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe MergeRequestDiffEntity do diff --git a/spec/serializers/merge_request_for_pipeline_entity_spec.rb b/spec/serializers/merge_request_for_pipeline_entity_spec.rb index e49b45bc7d7..b39fbce8c3a 100644 --- a/spec/serializers/merge_request_for_pipeline_entity_spec.rb +++ b/spec/serializers/merge_request_for_pipeline_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe MergeRequestForPipelineEntity do diff --git a/spec/serializers/merge_request_serializer_spec.rb b/spec/serializers/merge_request_serializer_spec.rb index cf0b8ea9b40..a99f11168c0 100644 --- a/spec/serializers/merge_request_serializer_spec.rb +++ b/spec/serializers/merge_request_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe MergeRequestSerializer do diff --git a/spec/serializers/merge_request_user_entity_spec.rb b/spec/serializers/merge_request_user_entity_spec.rb index c91ea4aa681..47b9b0a57ab 100644 --- a/spec/serializers/merge_request_user_entity_spec.rb +++ b/spec/serializers/merge_request_user_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe MergeRequestUserEntity do diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb index ffbfac9b326..4872b23d26b 100644 --- a/spec/serializers/merge_request_widget_entity_spec.rb +++ b/spec/serializers/merge_request_widget_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe MergeRequestWidgetEntity do diff --git a/spec/serializers/note_entity_spec.rb b/spec/serializers/note_entity_spec.rb index 13cda781cda..cec07cda063 100644 --- a/spec/serializers/note_entity_spec.rb +++ b/spec/serializers/note_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe NoteEntity do diff --git a/spec/serializers/paginated_diff_entity_spec.rb b/spec/serializers/paginated_diff_entity_spec.rb new file mode 100644 index 00000000000..7432e072318 --- /dev/null +++ b/spec/serializers/paginated_diff_entity_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe PaginatedDiffEntity do + let(:user) { create(:user) } + let(:request) { double('request', current_user: user) } + let(:merge_request) { create(:merge_request, :with_diffs) } + let(:diff_batch) { merge_request.merge_request_diff.diffs_in_batch(2, 3, diff_options: nil) } + let(:options) do + { + request: request, + merge_request: merge_request, + pagination_data: diff_batch.pagination_data + } + end + let(:entity) { described_class.new(diff_batch, options) } + + subject { entity.as_json } + + it 'exposes diff_files' do + expect(subject[:diff_files]).to be_present + end + + it 'exposes pagination data' do + expect(subject[:pagination]).to eq( + current_page: 2, + next_page: 3, + next_page_href: "/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}/diffs_batch.json?page=3", + total_pages: 7 + ) + end +end diff --git a/spec/serializers/pipeline_details_entity_spec.rb b/spec/serializers/pipeline_details_entity_spec.rb index 8e73a3e67c6..b180ede51eb 100644 --- a/spec/serializers/pipeline_details_entity_spec.rb +++ b/spec/serializers/pipeline_details_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe PipelineDetailsEntity do @@ -136,5 +138,40 @@ describe PipelineDetailsEntity do expect(subject[:flags][:yaml_errors]).to be false end end + + context 'when pipeline is triggered by other pipeline' do + let(:pipeline) { create(:ci_empty_pipeline) } + + before do + create(:ci_sources_pipeline, pipeline: pipeline) + end + + it 'contains an information about depedent pipeline' do + expect(subject[:triggered_by]).to be_a(Hash) + expect(subject[:triggered_by][:path]).not_to be_nil + expect(subject[:triggered_by][:details]).not_to be_nil + expect(subject[:triggered_by][:details][:status]).not_to be_nil + expect(subject[:triggered_by][:project]).not_to be_nil + end + end + + context 'when pipeline triggered other pipeline' do + let(:pipeline) { create(:ci_empty_pipeline) } + let(:build) { create(:ci_build, pipeline: pipeline) } + + before do + create(:ci_sources_pipeline, source_job: build) + create(:ci_sources_pipeline, source_job: build) + end + + it 'contains an information about depedent pipeline' do + expect(subject[:triggered]).to be_a(Array) + expect(subject[:triggered].length).to eq(2) + expect(subject[:triggered].first[:path]).not_to be_nil + expect(subject[:triggered].first[:details]).not_to be_nil + expect(subject[:triggered].first[:details][:status]).not_to be_nil + expect(subject[:triggered].first[:project]).not_to be_nil + end + end end end diff --git a/spec/serializers/pipeline_entity_spec.rb b/spec/serializers/pipeline_entity_spec.rb index eb9972d3e4d..02c5b817ea4 100644 --- a/spec/serializers/pipeline_entity_spec.rb +++ b/spec/serializers/pipeline_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe PipelineEntity do diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb index 0ccdea34f74..ce5264ec8bb 100644 --- a/spec/serializers/pipeline_serializer_spec.rb +++ b/spec/serializers/pipeline_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe PipelineSerializer do @@ -137,6 +139,7 @@ describe PipelineSerializer do describe 'number of queries when preloaded' do subject { serializer.represent(resource, preload: true) } + let(:resource) { Ci::Pipeline.all } before do @@ -156,7 +159,7 @@ describe PipelineSerializer do it 'verifies number of queries', :request_store do recorded = ActiveRecord::QueryRecorder.new { subject } - expected_queries = Gitlab.ee? ? 38 : 31 + expected_queries = Gitlab.ee? ? 38 : 35 expect(recorded.count).to be_within(2).of(expected_queries) expect(recorded.cached_count).to eq(0) @@ -177,7 +180,8 @@ describe PipelineSerializer do # pipeline. With the same ref this check is cached but if refs are # different then there is an extra query per ref # https://gitlab.com/gitlab-org/gitlab-foss/issues/46368 - expected_queries = Gitlab.ee? ? 44 : 38 + expected_queries = Gitlab.ee? ? 44 : 41 + expect(recorded.count).to be_within(2).of(expected_queries) expect(recorded.cached_count).to eq(0) end diff --git a/spec/serializers/project_mirror_entity_spec.rb b/spec/serializers/project_mirror_entity_spec.rb index ad0a8bbdff0..0d64199ecf6 100644 --- a/spec/serializers/project_mirror_entity_spec.rb +++ b/spec/serializers/project_mirror_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ProjectMirrorEntity do diff --git a/spec/serializers/project_mirror_serializer_spec.rb b/spec/serializers/project_mirror_serializer_spec.rb index 5e47163532a..b50c2267ced 100644 --- a/spec/serializers/project_mirror_serializer_spec.rb +++ b/spec/serializers/project_mirror_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ProjectMirrorSerializer do diff --git a/spec/serializers/project_note_entity_spec.rb b/spec/serializers/project_note_entity_spec.rb index dafd1cf603e..7c76f230781 100644 --- a/spec/serializers/project_note_entity_spec.rb +++ b/spec/serializers/project_note_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe ProjectNoteEntity do diff --git a/spec/serializers/remote_mirror_entity_spec.rb b/spec/serializers/remote_mirror_entity_spec.rb index 885b0b9b423..5f4aac213be 100644 --- a/spec/serializers/remote_mirror_entity_spec.rb +++ b/spec/serializers/remote_mirror_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe RemoteMirrorEntity do diff --git a/spec/serializers/request_aware_entity_spec.rb b/spec/serializers/request_aware_entity_spec.rb index aa666b961dc..8ddb35f5f61 100644 --- a/spec/serializers/request_aware_entity_spec.rb +++ b/spec/serializers/request_aware_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe RequestAwareEntity do diff --git a/spec/serializers/runner_entity_spec.rb b/spec/serializers/runner_entity_spec.rb index ba99d568eba..11a6aba431b 100644 --- a/spec/serializers/runner_entity_spec.rb +++ b/spec/serializers/runner_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe RunnerEntity do diff --git a/spec/serializers/stage_entity_spec.rb b/spec/serializers/stage_entity_spec.rb index 6b1185d1283..58573df31e7 100644 --- a/spec/serializers/stage_entity_spec.rb +++ b/spec/serializers/stage_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe StageEntity do diff --git a/spec/serializers/test_case_entity_spec.rb b/spec/serializers/test_case_entity_spec.rb index cc5f086ca4e..84203adea2c 100644 --- a/spec/serializers/test_case_entity_spec.rb +++ b/spec/serializers/test_case_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe TestCaseEntity do diff --git a/spec/serializers/test_report_entity_spec.rb b/spec/serializers/test_report_entity_spec.rb new file mode 100644 index 00000000000..5913d1c0208 --- /dev/null +++ b/spec/serializers/test_report_entity_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe TestReportEntity do + let(:pipeline) { create(:ci_pipeline, :with_test_reports) } + let(:entity) { described_class.new(pipeline.test_reports) } + + describe '#as_json' do + subject(:as_json) { entity.as_json } + + it 'contains the total time' do + expect(as_json).to include(:total_time) + end + + it 'contains the counts' do + expect(as_json).to include(:total_count, :success_count, :failed_count, :skipped_count, :error_count) + end + + it 'contains the test suites' do + expect(as_json).to include(:test_suites) + expect(as_json[:test_suites].count).to eq(1) + end + end +end diff --git a/spec/serializers/test_reports_comparer_entity_spec.rb b/spec/serializers/test_reports_comparer_entity_spec.rb index 4a951bbbde4..2627ad536e4 100644 --- a/spec/serializers/test_reports_comparer_entity_spec.rb +++ b/spec/serializers/test_reports_comparer_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe TestReportsComparerEntity do diff --git a/spec/serializers/test_reports_comparer_serializer_spec.rb b/spec/serializers/test_reports_comparer_serializer_spec.rb index 62dc6f486c5..0d833afe9e4 100644 --- a/spec/serializers/test_reports_comparer_serializer_spec.rb +++ b/spec/serializers/test_reports_comparer_serializer_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe TestReportsComparerSerializer do diff --git a/spec/serializers/test_suite_comparer_entity_spec.rb b/spec/serializers/test_suite_comparer_entity_spec.rb index 4b2cca2c68c..e22387130a1 100644 --- a/spec/serializers/test_suite_comparer_entity_spec.rb +++ b/spec/serializers/test_suite_comparer_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe TestSuiteComparerEntity do diff --git a/spec/serializers/test_suite_entity_spec.rb b/spec/serializers/test_suite_entity_spec.rb new file mode 100644 index 00000000000..54dca3214b7 --- /dev/null +++ b/spec/serializers/test_suite_entity_spec.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe TestSuiteEntity do + let(:pipeline) { create(:ci_pipeline, :with_test_reports) } + let(:entity) { described_class.new(pipeline.test_reports.test_suites.values.first) } + + describe '#as_json' do + subject(:as_json) { entity.as_json } + + it 'contains the suite name' do + expect(as_json).to include(:name) + end + + it 'contains the total time' do + expect(as_json).to include(:total_time) + end + + it 'contains the counts' do + expect(as_json).to include(:total_count, :success_count, :failed_count, :skipped_count, :error_count) + end + + it 'contains the test cases' do + expect(as_json).to include(:test_cases) + expect(as_json[:test_cases].count).to eq(4) + end + end +end diff --git a/spec/serializers/trigger_variable_entity_spec.rb b/spec/serializers/trigger_variable_entity_spec.rb index 66567c05f52..f5a21f943d8 100644 --- a/spec/serializers/trigger_variable_entity_spec.rb +++ b/spec/serializers/trigger_variable_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe TriggerVariableEntity do diff --git a/spec/serializers/user_entity_spec.rb b/spec/serializers/user_entity_spec.rb index cd778e49107..edb49757b38 100644 --- a/spec/serializers/user_entity_spec.rb +++ b/spec/serializers/user_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe UserEntity do diff --git a/spec/serializers/variable_entity_spec.rb b/spec/serializers/variable_entity_spec.rb index 10664ff66ec..742b14fb3d3 100644 --- a/spec/serializers/variable_entity_spec.rb +++ b/spec/serializers/variable_entity_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'spec_helper' describe VariableEntity do |