Move shared examples into the only file where used
This will make it easier to perform in place adjustments, etc for future MRs involving group clusters.
This commit is contained in:
parent
b69a047409
commit
c3c22cb210
|
@ -2,17 +2,87 @@ require 'spec_helper'
|
|||
|
||||
describe Clusters::CreateService do
|
||||
let(:access_token) { 'xxx' }
|
||||
let(:project) { create(:project) }
|
||||
let(:user) { create(:user) }
|
||||
let(:service) { described_class.new(user, params) }
|
||||
|
||||
subject { described_class.new(user, params).execute(project: project, access_token: access_token) }
|
||||
describe '#execute' do
|
||||
before do
|
||||
allow(ClusterProvisionWorker).to receive(:perform_async)
|
||||
end
|
||||
|
||||
shared_context 'valid cluster create params' do
|
||||
let(:params) do
|
||||
{
|
||||
name: 'test-cluster',
|
||||
provider_type: :gcp,
|
||||
provider_gcp_attributes: {
|
||||
gcp_project_id: 'gcp-project',
|
||||
zone: 'us-central1-a',
|
||||
num_nodes: 1,
|
||||
machine_type: 'machine_type-a',
|
||||
legacy_abac: 'true'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
shared_context 'invalid cluster create params' do
|
||||
let(:params) do
|
||||
{
|
||||
name: 'test-cluster',
|
||||
provider_type: :gcp,
|
||||
provider_gcp_attributes: {
|
||||
gcp_project_id: '!!!!!!!',
|
||||
zone: 'us-central1-a',
|
||||
num_nodes: 1,
|
||||
machine_type: 'machine_type-a'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'create cluster service success' do
|
||||
it 'creates a cluster object and performs a worker' do
|
||||
expect(ClusterProvisionWorker).to receive(:perform_async)
|
||||
|
||||
expect { subject }
|
||||
.to change { Clusters::Cluster.count }.by(1)
|
||||
.and change { Clusters::Providers::Gcp.count }.by(1)
|
||||
|
||||
expect(subject.name).to eq('test-cluster')
|
||||
expect(subject.user).to eq(user)
|
||||
expect(subject.provider.gcp_project_id).to eq('gcp-project')
|
||||
expect(subject.provider.zone).to eq('us-central1-a')
|
||||
expect(subject.provider.num_nodes).to eq(1)
|
||||
expect(subject.provider.machine_type).to eq('machine_type-a')
|
||||
expect(subject.provider.access_token).to eq(access_token)
|
||||
expect(subject.provider).to be_legacy_abac
|
||||
expect(subject.platform).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'create cluster service error' do
|
||||
it 'returns an error' do
|
||||
expect(ClusterProvisionWorker).not_to receive(:perform_async)
|
||||
expect { subject }.to change { Clusters::Cluster.count }.by(0)
|
||||
expect(subject.errors[:"provider_gcp.gcp_project_id"]).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
context 'create cluster for project' do
|
||||
let(:project) { create(:project) }
|
||||
|
||||
subject { service.execute(project: project, access_token: access_token) }
|
||||
|
||||
context 'when provider is gcp' do
|
||||
context 'when project has no clusters' do
|
||||
context 'when correct params' do
|
||||
include_context 'valid cluster create params'
|
||||
|
||||
include_examples 'create cluster service success'
|
||||
|
||||
it 'associates project to the cluster' do
|
||||
expect(subject.project).to eq(project)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when invalid params' do
|
||||
|
@ -33,3 +103,4 @@ describe Clusters::CreateService do
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
shared_context 'valid cluster create params' do
|
||||
let(:params) do
|
||||
{
|
||||
name: 'test-cluster',
|
||||
provider_type: :gcp,
|
||||
provider_gcp_attributes: {
|
||||
gcp_project_id: 'gcp-project',
|
||||
zone: 'us-central1-a',
|
||||
num_nodes: 1,
|
||||
machine_type: 'machine_type-a',
|
||||
legacy_abac: 'true'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
shared_context 'invalid cluster create params' do
|
||||
let(:params) do
|
||||
{
|
||||
name: 'test-cluster',
|
||||
provider_type: :gcp,
|
||||
provider_gcp_attributes: {
|
||||
gcp_project_id: '!!!!!!!',
|
||||
zone: 'us-central1-a',
|
||||
num_nodes: 1,
|
||||
machine_type: 'machine_type-a'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'create cluster service success' do
|
||||
it 'creates a cluster object and performs a worker' do
|
||||
expect(ClusterProvisionWorker).to receive(:perform_async)
|
||||
|
||||
expect { subject }
|
||||
.to change { Clusters::Cluster.count }.by(1)
|
||||
.and change { Clusters::Providers::Gcp.count }.by(1)
|
||||
|
||||
expect(subject.name).to eq('test-cluster')
|
||||
expect(subject.user).to eq(user)
|
||||
expect(subject.project).to eq(project)
|
||||
expect(subject.provider.gcp_project_id).to eq('gcp-project')
|
||||
expect(subject.provider.zone).to eq('us-central1-a')
|
||||
expect(subject.provider.num_nodes).to eq(1)
|
||||
expect(subject.provider.machine_type).to eq('machine_type-a')
|
||||
expect(subject.provider.access_token).to eq(access_token)
|
||||
expect(subject.provider).to be_legacy_abac
|
||||
expect(subject.platform).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'create cluster service error' do
|
||||
it 'returns an error' do
|
||||
expect(ClusterProvisionWorker).not_to receive(:perform_async)
|
||||
expect { subject }.to change { Clusters::Cluster.count }.by(0)
|
||||
expect(subject.errors[:"provider_gcp.gcp_project_id"]).to be_present
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue