diff --git a/devops-service/spec/executors/server_executor_spec.rb b/devops-service/spec/executors/server_executor_spec.rb new file mode 100644 index 0000000..6202f1f --- /dev/null +++ b/devops-service/spec/executors/server_executor_spec.rb @@ -0,0 +1,50 @@ +require 'lib/executors/server_executor' + +RSpec.describe Devops::Executor::ServerExecutor, type: :executor, stubbed_connector: true do + let(:project) { build(:project) } + let(:deploy_env) { project.deploy_env('foo') } + let(:server) { build(:server, project: project.id, deploy_env: 'foo') } + let(:executor) { described_class.new(server, '') } + + before do + allow(stubbed_connector).to receive(:project) { project } + end + + describe '#initialize' do + + it 'sets server, project, deploy_env, out instance variables' do + expect(executor).to have_instance_variable_value(:server, server) + expect(executor).to have_instance_variable_value(:project, project) + expect(executor).to have_instance_variable_value(:deploy_env, deploy_env) + expect(executor).to have_instance_variable_value(:out, '') + end + + it 'set knife_instance instance variable' do + allow(KnifeFactory).to receive(:instance) + expect(executor).to be_instance_variable_defined(:@knife_instance) + end + + it 'defines :flush method on @out if it is absent' do + out = Class.new.new + expect(out).not_to respond_to(:flush) + described_class.new(server, out) + expect(out).to respond_to(:flush) + end + + it 'sets current_user from options' do + user = double + executor = described_class.new(server, '', {current_user: user}) + expect(executor).to have_instance_variable_value(:current_user, user) + end + end + + describe '#create_server_object' do + it 'builds Server object' do + server = executor.create_server_object('created_by' => 'me') + expect(server).to be_a(Devops::Model::Server) + expect(server.project).to eq 'my_project' + expect(server.deploy_env).to eq 'foo' + expect(server.created_by).to eq 'me' + end + end +end \ No newline at end of file diff --git a/devops-service/spec/support/instance_variable_matcher.rb b/devops-service/spec/support/instance_variable_matcher.rb new file mode 100644 index 0000000..51f5097 --- /dev/null +++ b/devops-service/spec/support/instance_variable_matcher.rb @@ -0,0 +1,6 @@ +RSpec::Matchers.define :have_instance_variable_value do |name, value| + match do |actual| + actual.instance_variable_defined?("@#{name}") && + actual.instance_variable_get("@#{name}") == value + end +end \ No newline at end of file