Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-07-18 03:09:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-07-18 03:09:34 +0300
commitccefff8087799bc076737ad080f18cf98e6fe114 (patch)
tree452ebc93942fd48d58e57ea57f8bdaaa93ab5b90 /spec
parent1d84a028b42a1a3aed36a0f3a6cae970c8df8e69 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/frontend/blob/pipeline_tour_success_modal_spec.js7
-rw-r--r--spec/lib/api/helpers/merge_requests_helpers_spec.rb63
-rw-r--r--spec/models/ci/job_artifact_spec.rb64
-rw-r--r--spec/requests/api/ci/runner_spec.rb20
-rw-r--r--spec/requests/api/merge_requests_spec.rb10
5 files changed, 107 insertions, 57 deletions
diff --git a/spec/frontend/blob/pipeline_tour_success_modal_spec.js b/spec/frontend/blob/pipeline_tour_success_modal_spec.js
index 6d4e5e46cb8..41c64f76e61 100644
--- a/spec/frontend/blob/pipeline_tour_success_modal_spec.js
+++ b/spec/frontend/blob/pipeline_tour_success_modal_spec.js
@@ -1,7 +1,7 @@
import pipelineTourSuccess from '~/blob/pipeline_tour_success_modal.vue';
import { shallowMount } from '@vue/test-utils';
import Cookies from 'js-cookie';
-import { GlSprintf, GlModal } from '@gitlab/ui';
+import { GlSprintf, GlModal, GlLink } from '@gitlab/ui';
import { mockTracking, triggerEvent, unmockTracking } from 'helpers/tracking_helper';
import modalProps from './pipeline_tour_success_mock_data';
@@ -18,6 +18,7 @@ describe('PipelineTourSuccessModal', () => {
propsData: modalProps,
stubs: {
GlModal,
+ GlSprintf,
},
});
@@ -37,6 +38,10 @@ describe('PipelineTourSuccessModal', () => {
expect(sprintf.exists()).toBe(true);
});
+ it('renders the link for codeQualityLink', () => {
+ expect(wrapper.find(GlLink).attributes('href')).toBe(wrapper.vm.$options.codeQualityLink);
+ });
+
it('calls to remove cookie', () => {
wrapper.vm.disableModalFromRenderingAgain();
diff --git a/spec/lib/api/helpers/merge_requests_helpers_spec.rb b/spec/lib/api/helpers/merge_requests_helpers_spec.rb
new file mode 100644
index 00000000000..1d68b7985f1
--- /dev/null
+++ b/spec/lib/api/helpers/merge_requests_helpers_spec.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe API::Helpers::MergeRequestsHelpers do
+ describe '#handle_merge_request_errors!' do
+ let(:helper) do
+ Class.new do
+ include API::Helpers::MergeRequestsHelpers
+ end.new
+ end
+
+ let(:merge_request) { double }
+
+ context 'when merge request is valid' do
+ it 'returns nil' do
+ allow(merge_request).to receive(:valid?).and_return(true)
+
+ expect(merge_request).not_to receive(:errors)
+
+ helper.handle_merge_request_errors!(merge_request)
+ end
+ end
+
+ context 'when merge request is invalid' do
+ before do
+ allow(merge_request).to receive(:valid?).and_return(false)
+ allow(helper).to receive_messages([
+ :unprocessable_entity!, :conflict!, :render_validation_error!
+ ])
+ end
+
+ API::Helpers::MergeRequestsHelpers::UNPROCESSABLE_ERROR_KEYS.each do |error_key|
+ it "responds to a #{error_key} error with unprocessable_entity" do
+ error = double
+ allow(merge_request).to receive(:errors).and_return({ error_key => error })
+
+ expect(helper).to receive(:unprocessable_entity!).with(error)
+
+ helper.handle_merge_request_errors!(merge_request)
+ end
+ end
+
+ it 'responds to a validate_branches error with conflict' do
+ error = double
+ allow(merge_request).to receive(:errors).and_return({ validate_branches: error })
+
+ expect(helper).to receive(:conflict!).with(error)
+
+ helper.handle_merge_request_errors!(merge_request)
+ end
+
+ it 'responds with bad request' do
+ error = double
+ allow(merge_request).to receive(:errors).and_return({ other_error: error })
+
+ expect(helper).to receive(:render_validation_error!).with(merge_request)
+
+ helper.handle_merge_request_errors!(merge_request)
+ end
+ end
+ end
+end
diff --git a/spec/models/ci/job_artifact_spec.rb b/spec/models/ci/job_artifact_spec.rb
index b5f9128b7c5..9445ddfcd9d 100644
--- a/spec/models/ci/job_artifact_spec.rb
+++ b/spec/models/ci/job_artifact_spec.rb
@@ -529,11 +529,9 @@ RSpec.describe Ci::JobArtifact do
context 'when file type is supported' do
let(:project_closest_setting) { 1024 }
let(:artifact_type) { 'junit' }
+ let(:limit_name) { "#{described_class::PLAN_LIMIT_PREFIX}#{artifact_type}" }
- before do
- stub_feature_flags(ci_max_artifact_size_per_type: flag_enabled)
- allow(build.project).to receive(:closest_setting).with(:max_artifacts_size).and_return(project_closest_setting)
- end
+ let!(:plan_limits) { create(:plan_limits, :default_plan) }
shared_examples_for 'basing off the project closest setting' do
it { is_expected.to eq(project_closest_setting.megabytes.to_i) }
@@ -543,49 +541,40 @@ RSpec.describe Ci::JobArtifact do
it { is_expected.to eq(max_size_for_type.megabytes.to_i) }
end
- context 'and feature flag for custom max size per type is enabled' do
- let(:flag_enabled) { true }
- let(:limit_name) { "#{described_class::PLAN_LIMIT_PREFIX}#{artifact_type}" }
-
- let!(:plan_limits) { create(:plan_limits, :default_plan) }
+ before do
+ allow(build.project).to receive(:closest_setting).with(:max_artifacts_size).and_return(project_closest_setting)
+ end
- context 'and plan limit is disabled for the given artifact type' do
- before do
- plan_limits.update!(limit_name => 0)
- end
+ context 'and plan limit is disabled for the given artifact type' do
+ before do
+ plan_limits.update!(limit_name => 0)
+ end
- it_behaves_like 'basing off the project closest setting'
+ it_behaves_like 'basing off the project closest setting'
- context 'and project closest setting results to zero' do
- let(:project_closest_setting) { 0 }
+ context 'and project closest setting results to zero' do
+ let(:project_closest_setting) { 0 }
- it { is_expected.to eq(0) }
- end
+ it { is_expected.to eq(0) }
end
+ end
- context 'and plan limit is enabled for the given artifact type' do
- before do
- plan_limits.update!(limit_name => max_size_for_type)
- end
-
- context 'and plan limit is smaller than project setting' do
- let(:max_size_for_type) { project_closest_setting - 1 }
-
- it_behaves_like 'basing off the plan limit'
- end
+ context 'and plan limit is enabled for the given artifact type' do
+ before do
+ plan_limits.update!(limit_name => max_size_for_type)
+ end
- context 'and plan limit is smaller than project setting' do
- let(:max_size_for_type) { project_closest_setting + 1 }
+ context 'and plan limit is smaller than project setting' do
+ let(:max_size_for_type) { project_closest_setting - 1 }
- it_behaves_like 'basing off the project closest setting'
- end
+ it_behaves_like 'basing off the plan limit'
end
- end
- context 'and feature flag for custom max size per type is disabled' do
- let(:flag_enabled) { false }
+ context 'and plan limit is larger than project setting' do
+ let(:max_size_for_type) { project_closest_setting + 1 }
- it_behaves_like 'basing off the project closest setting'
+ it_behaves_like 'basing off the project closest setting'
+ end
end
end
end
@@ -597,7 +586,8 @@ RSpec.describe Ci::JobArtifact do
Please refer to https://docs.gitlab.com/ee/development/application_limits.html on how to add new plan limit columns.
Take note that while existing max size plan limits default to 0, succeeding new limits are recommended to have
- non-zero default values.
+ non-zero default values. Also, remember to update the plan limits documentation (doc/administration/instance_limits.md)
+ when changes or new entries are made.
MSG
end
end
diff --git a/spec/requests/api/ci/runner_spec.rb b/spec/requests/api/ci/runner_spec.rb
index c8718309bf2..41c30ce383a 100644
--- a/spec/requests/api/ci/runner_spec.rb
+++ b/spec/requests/api/ci/runner_spec.rb
@@ -1632,25 +1632,7 @@ RSpec.describe API::Ci::Runner, :clean_gitlab_redis_shared_state do
stub_application_setting(max_artifacts_size: application_max_size)
end
- context 'and feature flag ci_max_artifact_size_per_type is enabled' do
- before do
- stub_feature_flags(ci_max_artifact_size_per_type: true)
- end
-
- it_behaves_like 'failed request'
- end
-
- context 'and feature flag ci_max_artifact_size_per_type is disabled' do
- before do
- stub_feature_flags(ci_max_artifact_size_per_type: false)
- end
-
- it 'bases of project closest setting' do
- send_request
-
- expect(response).to have_gitlab_http_status(success_code)
- end
- end
+ it_behaves_like 'failed request'
end
context 'based on application setting' do
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 68f1a0f1ba1..d4c05b4b198 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -1551,25 +1551,33 @@ RSpec.describe API::MergeRequests do
it "returns 422 when source_branch equals target_branch" do
post api("/projects/#{project.id}/merge_requests", user),
params: { title: "Test merge_request", source_branch: "master", target_branch: "master", author: user }
+
expect(response).to have_gitlab_http_status(:unprocessable_entity)
+ expect(json_response['message']).to eq(["You can't use same project/branch for source and target"])
end
it "returns 400 when source_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
params: { title: "Test merge_request", target_branch: "master", author: user }
+
expect(response).to have_gitlab_http_status(:bad_request)
+ expect(json_response['error']).to eq('source_branch is missing')
end
it "returns 400 when target_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
params: { title: "Test merge_request", source_branch: "markdown", author: user }
+
expect(response).to have_gitlab_http_status(:bad_request)
+ expect(json_response['error']).to eq('target_branch is missing')
end
it "returns 400 when title is missing" do
post api("/projects/#{project.id}/merge_requests", user),
params: { target_branch: 'master', source_branch: 'markdown' }
+
expect(response).to have_gitlab_http_status(:bad_request)
+ expect(json_response['error']).to eq('title is missing')
end
context 'with existing MR' do
@@ -1594,7 +1602,9 @@ RSpec.describe API::MergeRequests do
author: user
}
end.to change { MergeRequest.count }.by(0)
+
expect(response).to have_gitlab_http_status(:conflict)
+ expect(json_response['message']).to eq(["Another open merge request already exists for this source branch: !5"])
end
end