diff options
author | Winnie Hellmann <winnie@gitlab.com> | 2018-10-22 22:06:05 +0200 |
---|---|---|
committer | Winnie Hellmann <winnie@gitlab.com> | 2018-10-22 22:06:05 +0200 |
commit | 53be95daf41fc4e59deab149485210835e7e54cd (patch) | |
tree | 3f377dcc6289049581e2473b7e12f260e774784f /spec/serializers | |
parent | 3fb7a1f97a812b7b2b5e80a8a0575cb7bfd2d3c4 (diff) | |
parent | d6be7ed79557ce31a5d0062ceea00c877157a6c7 (diff) | |
download | gitlab-ce-53be95daf41fc4e59deab149485210835e7e54cd.tar.gz |
Merge branch 'master' into scheduled-manual-jobs-environment-play-buttons
Conflicts:
spec/javascripts/environments/environment_actions_spec.js
Diffstat (limited to 'spec/serializers')
-rw-r--r-- | spec/serializers/deployment_serializer_spec.rb | 35 | ||||
-rw-r--r-- | spec/serializers/environment_status_entity_spec.rb | 49 | ||||
-rw-r--r-- | spec/serializers/merge_request_widget_entity_spec.rb | 8 |
3 files changed, 89 insertions, 3 deletions
diff --git a/spec/serializers/deployment_serializer_spec.rb b/spec/serializers/deployment_serializer_spec.rb new file mode 100644 index 00000000000..4834f5ede3c --- /dev/null +++ b/spec/serializers/deployment_serializer_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe DeploymentSerializer do + set(:project) { create(:project, :repository) } + set(:user) { create(:user, email: project.commit.author_email) } + + let(:resource) { create(:deployment, project: project, sha: project.commit.id) } + let(:serializer) { described_class.new(request) } + + shared_examples 'json schema' do + let(:json_entity) { subject.as_json } + + it 'matches deployment entity schema' do + expect(json_entity).to match_schema('deployment') + end + end + + describe '#represent' do + subject { serializer.represent(resource) } + + let(:request) { { project: project, current_user: user } } + + it_behaves_like 'json schema' + end + + describe '#represent_concise' do + subject { serializer.represent_concise(resource) } + + let(:request) { { project: project } } + + it_behaves_like 'json schema' + end +end diff --git a/spec/serializers/environment_status_entity_spec.rb b/spec/serializers/environment_status_entity_spec.rb new file mode 100644 index 00000000000..6894c65d639 --- /dev/null +++ b/spec/serializers/environment_status_entity_spec.rb @@ -0,0 +1,49 @@ +require 'spec_helper' + +describe EnvironmentStatusEntity do + let(:user) { create(:user) } + let(:request) { double('request') } + + let(:deployment) { create(:deployment, :review_app) } + let(:environment) { deployment.environment} + let(:project) { deployment.project } + let(:merge_request) { create(:merge_request, :deployed_review_app, deployment: deployment) } + + let(:environment_status) { EnvironmentStatus.new(environment, merge_request) } + let(:entity) { described_class.new(environment_status, request: request) } + + subject { entity.as_json } + + before do + allow(request).to receive(:current_user).and_return(user) + end + + it { is_expected.to include(:id) } + it { is_expected.to include(:name) } + it { is_expected.to include(:url) } + it { is_expected.to include(:external_url) } + it { is_expected.to include(:external_url_formatted) } + it { is_expected.to include(:deployed_at) } + it { is_expected.to include(:deployed_at_formatted) } + it { is_expected.to include(:changes) } + + it { is_expected.not_to include(:stop_url) } + it { is_expected.not_to include(:metrics_url) } + it { is_expected.not_to include(:metrics_monitoring_url) } + + context 'when :ci_environments_status_changes feature flag is disabled' do + before do + stub_feature_flags(ci_environments_status_changes: false) + end + + it { is_expected.not_to include(:changes) } + end + + context 'when the user is project maintainer' do + before do + project.add_maintainer(user) + end + + it { is_expected.to include(:stop_url) } + end +end diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb index 0ba2539a717..5bf8aa7f23f 100644 --- a/spec/serializers/merge_request_widget_entity_spec.rb +++ b/spec/serializers/merge_request_widget_entity_spec.rb @@ -1,6 +1,8 @@ require 'spec_helper' describe MergeRequestWidgetEntity do + include ProjectForksHelper + let(:project) { create :project, :repository } let(:resource) { create(:merge_request, source_project: project, target_project: project) } let(:user) { create(:user) } @@ -206,12 +208,12 @@ describe MergeRequestWidgetEntity do describe 'when source project is deleted' do let(:project) { create(:project, :repository) } - let(:fork_project) { create(:project, :repository, forked_from_project: project) } - let(:merge_request) { create(:merge_request, source_project: fork_project, target_project: project) } + let(:forked_project) { fork_project(project) } + let(:merge_request) { create(:merge_request, source_project: forked_project, target_project: project) } it 'returns a blank rebase_path' do allow(merge_request).to receive(:should_be_rebased?).and_return(true) - fork_project.destroy + forked_project.destroy merge_request.reload entity = described_class.new(merge_request, request: request).as_json |