require_relative "../../../base" require Vagrant.source_root.join("plugins/synced_folders/nfs/action_cleanup") describe VagrantPlugins::SyncedFolderNFS::ActionCleanup do include_context "unit" let(:iso_env) do # We have to create a Vagrantfile so there is a root path env = isolated_environment env.vagrantfile("") env.create_vagrant_env end let(:host) { double("host") } let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) } let(:app) { lambda {} } let(:env) { { machine: machine, } } subject { described_class.new(app, env) } before do allow(machine.env).to receive(:host).and_return(host) end it "does nothing if there are no valid IDs" do expect(app).to receive(:call).with(env) subject.call(env) end it "does nothing if the host doesn't support pruning NFS" do allow(host).to receive(:capability?).with(:nfs_prune).and_return(false) expect(host).to receive(:capability).never expect(app).to receive(:call).with(env) subject.call(env) end it "prunes the NFS entries if valid IDs are given" do env[:nfs_valid_ids] = [1,2,3] allow(host).to receive(:capability?).with(:nfs_prune).and_return(true) expect(host).to receive(:capability).with(:nfs_prune, machine.ui, [1,2,3]).ordered expect(app).to receive(:call).with(env).ordered subject.call(env) end end