diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-10-04 23:26:56 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-10-04 23:26:56 +0900 |
commit | 8d9d0f9401269a5718da9d22a1863a4c4ab5f36e (patch) | |
tree | 58259553e2aa341f34175c439a788135237efe70 /spec | |
parent | a644f4b829080d603405c6eee73a88e2be5cf929 (diff) | |
download | gitlab-ce-8d9d0f9401269a5718da9d22a1863a4c4ab5f36e.tar.gz |
create_cluster_service_spec. cluster_provision_worker_spec. cluster_queue_spec.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/services/ci/create_cluster_service_spec.rb | 32 | ||||
-rw-r--r-- | spec/workers/cluster_provision_worker_spec.rb | 23 | ||||
-rw-r--r-- | spec/workers/concerns/cluster_queue_spec.rb | 15 | ||||
-rw-r--r-- | spec/workers/wait_for_cluster_creation_worker_spec.rb | 25 |
4 files changed, 93 insertions, 2 deletions
diff --git a/spec/services/ci/create_cluster_service_spec.rb b/spec/services/ci/create_cluster_service_spec.rb index eaa27eb4cc3..a905ca9895f 100644 --- a/spec/services/ci/create_cluster_service_spec.rb +++ b/spec/services/ci/create_cluster_service_spec.rb @@ -3,16 +3,44 @@ require 'spec_helper' describe Ci::CreateClusterService do describe '#execute' do let(:access_token) { 'xxx' } + let(:project) { create(:project) } + let(:user) { create(:user) } + let(:result) { described_class.new(project, user, params).execute(access_token) } context 'when correct params' do + let(:params) do + { + gcp_project_id: 'gcp-project', + gcp_cluster_name: 'test-cluster', + gcp_cluster_zone: 'us-central1-a', + gcp_cluster_size: 1, + } + end + it 'creates a cluster object' do - + expect(ClusterProvisionWorker).to receive(:perform_async) + expect { result }.to change { Gcp::Cluster.count }.by(1) + expect(result.gcp_project_id).to eq('gcp-project') + expect(result.gcp_cluster_name).to eq('test-cluster') + expect(result.gcp_cluster_zone).to eq('us-central1-a') + expect(result.gcp_cluster_size).to eq(1) + expect(result.gcp_token).to eq(access_token) end end context 'when invalid params' do - it 'returns an error' do + let(:params) do + { + gcp_project_id: 'gcp-project', + gcp_cluster_name: 'test-cluster', + gcp_cluster_zone: 'us-central1-a', + gcp_cluster_size: 'ABC', + } + end + it 'returns an error' do + expect(ClusterProvisionWorker).not_to receive(:perform_async) + expect { result }.to change { Gcp::Cluster.count }.by(0) end end end diff --git a/spec/workers/cluster_provision_worker_spec.rb b/spec/workers/cluster_provision_worker_spec.rb new file mode 100644 index 00000000000..11f208289db --- /dev/null +++ b/spec/workers/cluster_provision_worker_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe ClusterProvisionWorker do + describe '#perform' do + context 'when cluster exists' do + let(:cluster) { create(:gcp_cluster) } + + it 'provision a cluster' do + expect_any_instance_of(Ci::ProvisionClusterService).to receive(:execute) + + described_class.new.perform(cluster.id) + end + end + + context 'when cluster does not exist' do + it 'does not provision a cluster' do + expect_any_instance_of(Ci::ProvisionClusterService).not_to receive(:execute) + + described_class.new.perform(123) + end + end + end +end diff --git a/spec/workers/concerns/cluster_queue_spec.rb b/spec/workers/concerns/cluster_queue_spec.rb new file mode 100644 index 00000000000..1050651fa51 --- /dev/null +++ b/spec/workers/concerns/cluster_queue_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe ClusterQueue do + let(:worker) do + Class.new do + include Sidekiq::Worker + include ClusterQueue + end + end + + it 'sets a default pipelines queue automatically' do + expect(worker.sidekiq_options['queue']) + .to eq :gcp_cluster + end +end diff --git a/spec/workers/wait_for_cluster_creation_worker_spec.rb b/spec/workers/wait_for_cluster_creation_worker_spec.rb new file mode 100644 index 00000000000..753c7efb9af --- /dev/null +++ b/spec/workers/wait_for_cluster_creation_worker_spec.rb @@ -0,0 +1,25 @@ +require 'spec_helper' + +describe WaitForClusterCreationWorker do + describe '#perform' do + context 'when cluster exists' do + let(:cluster) { create(:gcp_cluster) } + + it 'fetches gcp operation status' do + expect_any_instance_of(Ci::FetchGcpOperationService).to receive(:execute) + + described_class.new.perform(cluster.id) + end + + # TODO: context 'when operation.status is runnning' + end + + context 'when cluster does not exist' do + it 'does not provision a cluster' do + expect_any_instance_of(Ci::FetchGcpOperationService).to receive(:execute).with(nil) + + described_class.new.perform(123) + end + end + end +end |