From b349d664e49de70a90bb2174ba8e122ad89a8e1b Mon Sep 17 00:00:00 2001 From: Brian Cain Date: Tue, 30 May 2017 09:52:57 -0700 Subject: [PATCH] Include snapshot list unit test This commit introduces a new set of unit tests for the snapshot list command. --- .../commands/snapshot/command/list_test.rb | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 test/unit/plugins/commands/snapshot/command/list_test.rb diff --git a/test/unit/plugins/commands/snapshot/command/list_test.rb b/test/unit/plugins/commands/snapshot/command/list_test.rb new file mode 100644 index 000000000..a812aa40f --- /dev/null +++ b/test/unit/plugins/commands/snapshot/command/list_test.rb @@ -0,0 +1,83 @@ +require File.expand_path("../../../../../base", __FILE__) + +require Vagrant.source_root.join("plugins/commands/snapshot/command/list") + +describe VagrantPlugins::CommandSnapshot::Command::List 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(:guest) { double("guest") } + let(:host) { double("host") } + let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) } + + let(:argv) { [] } + + subject { described_class.new(argv, iso_env) } + + before do + allow(machine.provider).to receive(:capability?).with(:snapshot_list). + and_return(true) + + allow(machine.provider).to receive(:capability).with(:snapshot_list). + and_return([]) + + allow(subject).to receive(:with_target_vms) { |&block| block.call machine } + end + + describe "execute" do + context "with an unsupported provider" do + let(:argv) { ["foo"] } + + before do + allow(machine.provider).to receive(:capability?).with(:snapshot_list). + and_return(false) + end + + it "raises an exception" do + machine.id = "foo" + expect { subject.execute }. + to raise_error(Vagrant::Errors::SnapshotNotSupported) + end + end + + context "with a vm given" do + let(:argv) { ["foo"] } + + it "prints a message if the vm does not exist" do + machine.id = nil + + expect(iso_env.ui).to receive(:info).with { |message, _| + expect(message).to include("VM not created") + } + expect(machine).to_not receive(:action) + expect(subject.execute).to eq(0) + end + + it "prints a message if no snapshots have been taken" do + machine.id = "foo" + + expect(iso_env.ui).to receive(:output) + .with(/No snapshots have been taken yet!/, anything) + expect(subject.execute).to eq(0) + end + + it "prints a list of snapshots" do + machine.id = "foo" + + allow(machine.provider).to receive(:capability).with(:snapshot_list). + and_return(["foo", "bar", "baz"]) + + expect(iso_env.ui).to receive(:output).with(/foo/, anything) + expect(iso_env.ui).to receive(:output).with(/bar/, anything) + expect(iso_env.ui).to receive(:output).with(/baz/, anything) + expect(subject.execute).to eq(0) + end + end + end +end