spec/gitlab/qa/docker/command_spec.rb (42 lines of code) (raw):
# frozen_string_literal: true
describe Gitlab::QA::Docker::Command do
let(:shell_command) { spy('shell_command') }
subject(:docker_command) { described_class.new }
before do
stub_const('Gitlab::QA::Support::ShellCommand', shell_command)
end
describe '#<<' do
it 'appends command arguments' do
docker_command << '--help'
expect(docker_command.args).to include '--help'
end
it 'returns self' do
expect(docker_command << 'args').to eq docker_command
end
end
describe '#volume' do
it 'appends volume arguments' do
docker_command.volume('/from', '/to', 'Z')
expect(docker_command.to_s).to include '--volume /from:/to:Z'
end
end
describe '#env' do
it 'appends env arguments with quotes' do
docker_command.env('TEST', 'some value')
expect(docker_command.to_s).to include '--env TEST="some value"'
end
end
describe 'execute!' do
it 'calls service shell_command' do
expect(shell_command).to receive(:execute!)
docker_command.execute!
end
end
describe '.execute' do
it 'executes command directly' do
instance = double('command')
expect(instance).to receive(:execute!)
allow(described_class).to receive(:new).and_return(instance)
described_class.execute('version')
end
end
end