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'
|
# options must contain 'server_attrs', 'owner'
|
||||||
def perform(options)
|
def perform(options)
|
||||||
call do
|
call do
|
||||||
server_attrs = options.fetch('server_attrs')
|
|
||||||
owner = options.fetch('owner')
|
owner = options.fetch('owner')
|
||||||
|
server_attrs = options.fetch('server_attrs').merge('created_by' => owner)
|
||||||
|
|
||||||
project = mongo.project(server_attrs["project"])
|
project = mongo.project(server_attrs['project'])
|
||||||
env = project.deploy_env(server_attrs["deploy_env"])
|
env = project.deploy_env(server_attrs['deploy_env'])
|
||||||
report = save_report(project, env, owner)
|
report = save_report(project, env, owner)
|
||||||
|
|
||||||
e = Devops::Executor::ServerExecutor.new(nil, out)
|
executor(project, env, report).create_server(server_attrs)
|
||||||
e.project = project
|
|
||||||
e.report = report
|
|
||||||
e.deploy_env = env
|
|
||||||
server_attrs["created_by"] = owner
|
|
||||||
e.create_server(server_attrs)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
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)
|
def save_report(project, env, owner)
|
||||||
update_report(
|
update_report(
|
||||||
"created_by" => owner,
|
"created_by" => owner,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user