require 'unit_helper'

require 'vagrant-lxc/plugin'
require 'vagrant-lxc/provider'
require 'vagrant-lxc/action/compress_rootfs'

describe Vagrant::LXC::Action::CompressRootFS do
  let(:app)                    { double(:app, call: true) }
  let(:env)                    { {machine: machine, ui: double(info: true)} }
  let(:machine)                { double(Vagrant::Machine, provider: provider) }
  let(:provider)               { double(Vagrant::LXC::Provider, driver: driver) }
  let(:driver)                 { double(Vagrant::LXC::Driver, compress_rootfs: compressed_rootfs_path) }
  let(:compressed_rootfs_path) { '/path/to/rootfs.tar.gz' }

  subject { described_class.new(app, env) }

  before do
    provider.stub_chain(:state, :id).and_return(:stopped)
    subject.call(env)
  end

  it "asks the driver to compress container's rootfs" do
    expect(driver).to have_received(:compress_rootfs)
  end

  it 'sets export.temp_dir on action env' do
    expect(env['package.rootfs']).to eq(compressed_rootfs_path)
  end
end