add CreateServerWorker specs
This commit is contained in:
parent
5b139b5235
commit
6c40538a16
30
devops-service/spec/workers/create_server_worker_spec.rb
Normal file
30
devops-service/spec/workers/create_server_worker_spec.rb
Normal file
@ -0,0 +1,30 @@
|
||||
require 'workers/create_server_worker'
|
||||
|
||||
RSpec.describe CreateServerWorker, type: :worker, stubbed_connector: true do
|
||||
let(:worker) { described_class.new }
|
||||
let(:perform) { worker.perform('owner' => 'user', 'server_attrs' => @server_attrs) }
|
||||
|
||||
before do
|
||||
allow(worker).to receive(:update_report)
|
||||
allow_any_instance_of(Devops::Executor::ServerExecutor).to receive(:create_server)
|
||||
@server_attrs = {'deploy_env' => 'foo'}
|
||||
allow(stubbed_connector).to receive(:project) { build(:project) }
|
||||
end
|
||||
|
||||
it 'requires server attrs and owner' do
|
||||
expect{ worker.perform('owner' => 'user') }.to raise_error KeyError
|
||||
expect{ worker.perform('server_attrs' => {}) }.to raise_error KeyError
|
||||
end
|
||||
|
||||
it 'updates report' do
|
||||
expect(worker).to receive(:update_report)
|
||||
perform
|
||||
end
|
||||
|
||||
it 'calls #create_server with server attrs merged with "created_by" on executor' do
|
||||
expect_any_instance_of(Devops::Executor::ServerExecutor).to receive(:create_server) do |caller, param|
|
||||
expect(param).to eq @server_attrs.merge('created_by' => 'user')
|
||||
end
|
||||
perform
|
||||
end
|
||||
end
|
||||
@ -9,24 +9,27 @@ class CreateServerWorker < Worker
|
||||
# options must contain 'server_attrs', 'owner'
|
||||
def perform(options)
|
||||
call do
|
||||
server_attrs = options.fetch('server_attrs')
|
||||
owner = options.fetch('owner')
|
||||
server_attrs = options.fetch('server_attrs').merge('created_by' => owner)
|
||||
|
||||
project = mongo.project(server_attrs["project"])
|
||||
env = project.deploy_env(server_attrs["deploy_env"])
|
||||
project = mongo.project(server_attrs['project'])
|
||||
env = project.deploy_env(server_attrs['deploy_env'])
|
||||
report = save_report(project, env, owner)
|
||||
|
||||
e = Devops::Executor::ServerExecutor.new(nil, out)
|
||||
e.project = project
|
||||
e.report = report
|
||||
e.deploy_env = env
|
||||
server_attrs["created_by"] = owner
|
||||
e.create_server(server_attrs)
|
||||
executor(project, env, report).create_server(server_attrs)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def executor(project, env, report)
|
||||
Devops::Executor::ServerExecutor.new(nil, out).tap do |executor|
|
||||
executor.project = project
|
||||
executor.deploy_env = env
|
||||
executor.report = report
|
||||
end
|
||||
end
|
||||
|
||||
def save_report(project, env, owner)
|
||||
update_report(
|
||||
"created_by" => owner,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user