Sha256: cf2e46be2bc6f0dd2cb12369678e49999b62385a511657da2147769f1dd6cdda

Contents?: true

Size: 1.87 KB

Versions: 7

Compression:

Stored size: 1.87 KB

Contents

require_relative "../../../../base"

require Vagrant.source_root.join("plugins/providers/hyperv/action/set_name")

describe VagrantPlugins::HyperV::Action::SetName do
  let(:app){ double("app") }
  let(:env){ {ui: ui, machine: machine, root_path: Pathname.new("path")} }
  let(:ui){ double("ui") }
  let(:provider){ double("provider", driver: driver) }
  let(:driver){ double("driver") }
  let(:machine){ double("machine", provider: provider, provider_config: provider_config, data_dir: data_dir, name: "machname") }
  let(:data_dir){ double("data_dir") }
  let(:provider_config){ double("provider_config", vmname: vmname) }
  let(:vmname){ "VMNAME" }
  let(:sentinel){ double("sentinel") }

  let(:subject){ described_class.new(app, env) }

  before do
    allow(ui).to receive(:info)
    allow(driver).to receive(:set_name)
    allow(app).to receive(:call)
    allow(data_dir).to receive(:join).and_return(sentinel)
    allow(sentinel).to receive(:file?).and_return(false)
    allow(sentinel).to receive(:open)
  end

  it "should call the app on success" do
    expect(app).to receive(:call)
    subject.call(env)
  end

  it "should call the driver to set the name" do
    expect(driver).to receive(:set_name)
    subject.call(env)
  end

  it "should use the configured name when setting" do
    expect(driver).to receive(:set_name).with(vmname)
    subject.call(env)
  end

  it "should write sentinel after name is set" do
    expect(sentinel).to receive(:open)
    subject.call(env)
  end

  context "when no name is provided in the config" do
    let(:vmname){ nil }

    it "should generate a name based on path and machine" do
      expect(driver).to receive(:set_name).with(/^#{env[:root_path].to_s}_#{machine.name}_.+/)
      subject.call(env)
    end

    it "should not set name if sentinel exists" do
      expect(sentinel).to receive(:file?).and_return(true)
      subject.call(env)
    end
  end
end

Version data entries

7 entries across 3 versions & 2 rubygems

Version Path
vagrant-aws-mkubenka-0.7.2.pre.24 vendor/bundle/ruby/2.7.0/bundler/gems/vagrant-22795b161bf6/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.2 vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/bundler/gems/vagrant-04f7215b5e3f/test/unit/plugins/providers/hyperv/action/set_name_test.rb