vaguerent/test/unit/vagrant/util/install_cli_autocomplete_test.rb

74 lines
2.4 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
require File.expand_path("../../../base", __FILE__)
require 'vagrant/util/install_cli_autocomplete'
require 'fileutils'
describe Vagrant::Util::InstallZSHShellConfig do
let(:home) { "#{Dir.tmpdir}/not-home" }
let(:target_file) { "#{home}/.zshrc" }
subject { described_class.new() }
describe "#shell_installed" do
it "should return path to config file if exists" do
allow(File).to receive(:exist?).with(target_file).and_return(true)
expect(subject.shell_installed(home)).to eq(target_file)
end
it "should return nil if config file does not exists" do
FileUtils.rm_rf(target_file)
expect(subject.shell_installed(home)).to eq(nil)
end
end
describe "#is_installed" do
it "returns false if autocompletion not already installed" do
allow(File).to receive(:foreach).with(target_file).and_yield("nothing")
expect(subject.is_installed(target_file)).to eq(false)
end
it "returns true if autocompletion is already installed" do
allow(File).to receive(:foreach).with(target_file).and_yield(subject.prepend_string)
expect(subject.is_installed(target_file)).to eq(true)
end
end
describe "#install" do
it "installs autocomplete" do
allow(File).to receive(:exist?).with(target_file).and_return(true)
allow(File).to receive(:foreach).with(target_file).and_yield("nothing")
expect(File).to receive(:open).with(target_file, "a")
subject.install(home)
end
end
end
describe Vagrant::Util::InstallCLIAutocomplete do
let(:zshrc_path) { "/path/to/.zshrc" }
let(:bashrc_path) { "/path/to/.bash_profile" }
subject { described_class }
describe ".install" do
it "installs requested shells" do
allow_any_instance_of(Vagrant::Util::InstallZSHShellConfig).to receive(:install).and_return(zshrc_path)
expect(subject.install(["zsh"])).to eq([zshrc_path])
end
it "installs all shells by default" do
allow_any_instance_of(Vagrant::Util::InstallZSHShellConfig).to receive(:install).and_return(zshrc_path)
allow_any_instance_of(Vagrant::Util::InstallBashShellConfig).to receive(:install).and_return(bashrc_path)
expect(subject.install()).to eq([zshrc_path, bashrc_path])
end
it "does not install unsupported shells" do
expect{ subject.install(["oops"]) }.to raise_error(ArgumentError)
end
end
end