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-03-07 00:07:59 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-07 00:07:59 +0300
commit1c25ac983cd1e4335faa1ec4922c314d6321e224 (patch)
tree68d88ab5d9ed5c3397e52fe85fc38ab237335a91 /spec
parent83731155d997ae24c7e0cd5ffa6f0dba41bec6dc (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/fixtures/trace/sample_trace2
-rw-r--r--spec/models/analytics/cycle_analytics/project_stage_spec.rb6
-rw-r--r--spec/models/clusters/cluster_spec.rb28
-rw-r--r--spec/models/error_tracking/project_error_tracking_setting_spec.rb2
-rw-r--r--spec/models/merge_request_spec.rb2
-rw-r--r--spec/models/service_spec.rb8
-rw-r--r--spec/services/merge_requests/after_create_service_spec.rb71
-rw-r--r--spec/services/merge_requests/create_service_spec.rb28
8 files changed, 116 insertions, 31 deletions
diff --git a/spec/fixtures/trace/sample_trace b/spec/fixtures/trace/sample_trace
index f768c038f9e..e76712782be 100644
--- a/spec/fixtures/trace/sample_trace
+++ b/spec/fixtures/trace/sample_trace
@@ -2772,8 +2772,6 @@ Service
should return false by default
#deprecation_message
should be empty by default
- .find_by_template
- returns service template
#api_field_names
filters out sensitive fields
diff --git a/spec/models/analytics/cycle_analytics/project_stage_spec.rb b/spec/models/analytics/cycle_analytics/project_stage_spec.rb
index 9d18618f638..9850bfde30e 100644
--- a/spec/models/analytics/cycle_analytics/project_stage_spec.rb
+++ b/spec/models/analytics/cycle_analytics/project_stage_spec.rb
@@ -8,7 +8,7 @@ describe Analytics::CycleAnalytics::ProjectStage do
end
it 'default stages must be valid' do
- project = create(:project)
+ project = build(:project)
Gitlab::Analytics::CycleAnalytics::DefaultStages.all.each do |params|
stage = described_class.new(params.merge(project: project))
@@ -17,13 +17,13 @@ describe Analytics::CycleAnalytics::ProjectStage do
end
it_behaves_like 'cycle analytics stage' do
- let(:parent) { create(:project) }
+ let(:parent) { build(:project) }
let(:parent_name) { :project }
end
context 'relative positioning' do
it_behaves_like 'a class that supports relative positioning' do
- let(:project) { create(:project) }
+ let(:project) { build(:project) }
let(:factory) { :cycle_analytics_project_stage }
let(:default_params) { { project: project } }
end
diff --git a/spec/models/clusters/cluster_spec.rb b/spec/models/clusters/cluster_spec.rb
index 8d0ede3d9bd..f6c19ccc9d3 100644
--- a/spec/models/clusters/cluster_spec.rb
+++ b/spec/models/clusters/cluster_spec.rb
@@ -573,17 +573,17 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
describe '#allow_user_defined_namespace?' do
- let(:cluster) { create(:cluster, :provided_by_gcp) }
-
subject { cluster.allow_user_defined_namespace? }
context 'project type cluster' do
context 'gitlab managed' do
+ let(:cluster) { build(:cluster, :provided_by_gcp) }
+
it { is_expected.to be_truthy }
end
context 'not managed' do
- let(:cluster) { create(:cluster, :provided_by_gcp, managed: false) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, managed: false) }
it { is_expected.to be_truthy }
end
@@ -591,13 +591,13 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
context 'group type cluster' do
context 'gitlab managed' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :group) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :group) }
it { is_expected.to be_falsey }
end
context 'not managed' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :group, managed: false) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :group, managed: false) }
it { is_expected.to be_truthy }
end
@@ -605,13 +605,13 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
context 'instance type cluster' do
context 'gitlab managed' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :instance) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :instance) }
it { is_expected.to be_falsey }
end
context 'not managed' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :instance, managed: false) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :instance, managed: false) }
it { is_expected.to be_truthy }
end
@@ -649,18 +649,18 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
describe '#kube_ingress_domain' do
- let(:cluster) { create(:cluster, :provided_by_gcp) }
+ let(:cluster) { build(:cluster, :provided_by_gcp) }
subject { cluster.kube_ingress_domain }
context 'with domain set in cluster' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :with_domain) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :with_domain) }
it { is_expected.to eq(cluster.domain) }
end
context 'with no domain on cluster' do
- let(:cluster) { create(:cluster, :project, :provided_by_gcp) }
+ let(:cluster) { build(:cluster, :project, :provided_by_gcp) }
let(:project) { cluster.project }
context 'with domain set at instance level' do
@@ -754,7 +754,7 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
context 'with no domain' do
- let(:cluster) { create(:cluster, :provided_by_gcp, :project) }
+ let(:cluster) { build(:cluster, :provided_by_gcp, :project) }
it 'returns an empty array' do
expect(subject.to_hash).to be_empty
@@ -782,7 +782,7 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
subject { cluster.status_name }
context 'the cluster has a provider' do
- let(:cluster) { create(:cluster, :provided_by_gcp) }
+ let(:cluster) { build(:cluster, :provided_by_gcp) }
let(:provider_status) { :errored }
before do
@@ -816,7 +816,7 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
context 'there is a cached connection status' do
- let(:cluster) { create(:cluster, :provided_by_user) }
+ let(:cluster) { build(:cluster, :provided_by_user) }
before do
allow(cluster).to receive(:connection_status).and_return(:connected)
@@ -826,7 +826,7 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
end
context 'there is no connection status in the cache' do
- let(:cluster) { create(:cluster, :provided_by_user) }
+ let(:cluster) { build(:cluster, :provided_by_user) }
before do
allow(cluster).to receive(:connection_status).and_return(nil)
diff --git a/spec/models/error_tracking/project_error_tracking_setting_spec.rb b/spec/models/error_tracking/project_error_tracking_setting_spec.rb
index ef3679da71f..b564c48a9c1 100644
--- a/spec/models/error_tracking/project_error_tracking_setting_spec.rb
+++ b/spec/models/error_tracking/project_error_tracking_setting_spec.rb
@@ -8,7 +8,7 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
let_it_be(:project) { create(:project) }
- subject(:setting) { create(:project_error_tracking_setting, project: project) }
+ subject(:setting) { build(:project_error_tracking_setting, project: project) }
describe 'Associations' do
it { is_expected.to belong_to(:project) }
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index 14f50ffd689..7cadce12213 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -276,6 +276,8 @@ describe MergeRequest do
end
describe 'respond to' do
+ subject { build(:merge_request) }
+
it { is_expected.to respond_to(:unchecked?) }
it { is_expected.to respond_to(:checking?) }
it { is_expected.to respond_to(:can_be_merged?) }
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 7e0c491bdfa..2bc8bdaed7c 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -406,14 +406,6 @@ describe Service do
end
end
- describe '.find_by_template' do
- let!(:service) { create(:service, template: true) }
-
- it 'returns service template' do
- expect(described_class.find_by_template).to eq(service)
- end
- end
-
describe '#api_field_names' do
let(:fake_service) do
Class.new(Service) do
diff --git a/spec/services/merge_requests/after_create_service_spec.rb b/spec/services/merge_requests/after_create_service_spec.rb
new file mode 100644
index 00000000000..974f72fa376
--- /dev/null
+++ b/spec/services/merge_requests/after_create_service_spec.rb
@@ -0,0 +1,71 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MergeRequests::AfterCreateService do
+ let_it_be(:merge_request) { create(:merge_request) }
+
+ subject(:after_create_service) do
+ described_class.new(merge_request.target_project, merge_request.author)
+ end
+
+ describe '#execute' do
+ let(:event_service) { instance_double('EventCreateService', open_mr: true) }
+ let(:notification_service) { instance_double('NotificationService', new_merge_request: true) }
+
+ before do
+ allow(after_create_service).to receive(:event_service).and_return(event_service)
+ allow(after_create_service).to receive(:notification_service).and_return(notification_service)
+ end
+
+ it 'creates a merge request open event' do
+ expect(event_service)
+ .to receive(:open_mr).with(merge_request, merge_request.author)
+
+ after_create_service.execute(merge_request)
+ end
+
+ it 'creates a new merge request notification' do
+ expect(notification_service)
+ .to receive(:new_merge_request).with(merge_request, merge_request.author)
+
+ after_create_service.execute(merge_request)
+ end
+
+ it 'writes diffs to the cache' do
+ expect(merge_request)
+ .to receive_message_chain(:diffs, :write_cache)
+
+ after_create_service.execute(merge_request)
+ end
+
+ it 'creates cross references' do
+ expect(merge_request)
+ .to receive(:create_cross_references!).with(merge_request.author)
+
+ after_create_service.execute(merge_request)
+ end
+
+ it 'creates a pipeline and updates the HEAD pipeline' do
+ expect(after_create_service)
+ .to receive(:create_pipeline_for).with(merge_request, merge_request.author)
+ expect(merge_request).to receive(:update_head_pipeline)
+
+ after_create_service.execute(merge_request)
+ end
+
+ # https://gitlab.com/gitlab-org/gitlab/issues/208813
+ context 'when the create_merge_request_pipelines_in_sidekiq flag is disabled' do
+ before do
+ stub_feature_flags(create_merge_request_pipelines_in_sidekiq: false)
+ end
+
+ it 'does not create a pipeline or update the HEAD pipeline' do
+ expect(after_create_service).not_to receive(:create_pipeline_for)
+ expect(merge_request).not_to receive(:update_head_pipeline)
+
+ after_create_service.execute(merge_request)
+ end
+ end
+ end
+end
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb
index c34f81901ef..2514fda5053 100644
--- a/spec/services/merge_requests/create_service_spec.rb
+++ b/spec/services/merge_requests/create_service_spec.rb
@@ -129,7 +129,23 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
end
end
- context 'when head pipelines already exist for merge request source branch' do
+ # https://gitlab.com/gitlab-org/gitlab/issues/208813
+ context 'when the create_merge_request_pipelines_in_sidekiq flag is disabled' do
+ before do
+ stub_feature_flags(create_merge_request_pipelines_in_sidekiq: false)
+ end
+
+ it 'creates a pipeline and updates the HEAD pipeline' do
+ expect(service).to receive(:create_pipeline_for)
+ expect_next_instance_of(MergeRequest) do |merge_request|
+ expect(merge_request).to receive(:update_head_pipeline)
+ end
+
+ service.execute
+ end
+ end
+
+ context 'when head pipelines already exist for merge request source branch', :sidekiq_inline do
let(:shas) { project.repository.commits(opts[:source_branch], limit: 2).map(&:id) }
let!(:pipeline_1) { create(:ci_pipeline, project: project, ref: opts[:source_branch], project_id: project.id, sha: shas[1]) }
let!(:pipeline_2) { create(:ci_pipeline, project: project, ref: opts[:source_branch], project_id: project.id, sha: shas[0]) }
@@ -175,7 +191,7 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
end
end
- describe 'Pipelines for merge requests' do
+ describe 'Pipelines for merge requests', :sidekiq_inline do
before do
stub_ci_pipeline_yaml_file(config)
end
@@ -216,7 +232,9 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
target_project.add_maintainer(user)
end
- it 'create legacy detached merge request pipeline for fork merge request', :sidekiq_might_not_need_inline do
+ it 'create legacy detached merge request pipeline for fork merge request' do
+ merge_request.reload
+
expect(merge_request.actual_head_pipeline)
.to be_legacy_detached_merge_request_pipeline
end
@@ -228,6 +246,8 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
end
it 'create legacy detached merge request pipeline for non-fork merge request' do
+ merge_request.reload
+
expect(merge_request.actual_head_pipeline)
.to be_legacy_detached_merge_request_pipeline
end
@@ -262,6 +282,8 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
end
it 'sets the latest detached merge request pipeline as the head pipeline' do
+ merge_request.reload
+
expect(merge_request.actual_head_pipeline).to be_merge_request_event
end
end