Sha256: e24f9f84acadb64e8de7db8119cddac0786e3be3a2eacf467cbe5428e6390e4b

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

require 'spec_helper'
require "vagrant-profitbricks/action/list_images"

describe VagrantPlugins::ProfitBricks::Action::ListImages do
  let(:app) { lambda { |env| } }
  let(:ui) { Vagrant::UI::Silent.new }
  let(:images) {
    Fog.mock!
    Fog::Compute.new({
      :provider => :profitbricks,
      :profitbricks_password => 'anything',
      :profitbricks_username => 'anything',
    }).images
  }
  let(:compute_connection) { double('fog connection') }
  let(:env) do
    {
      :profitbricks_compute => compute_connection,
      :ui => ui
    }
  end

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

  before do
    allow(compute_connection).to receive(:images).and_return images
  end

  it 'get images from Fog' do
    expect(compute_connection).to receive(:images).and_return images
    action.call(env)
  end

  it 'writes a sorted, formatted image table to Vagrant::UI' do
    header_line = '%-36s %s' % ['Image ID', 'Image Name']
    expect(ui).to receive(:info).with(header_line)
    images.sort_by(&:name).each do |image|
      formatted_line = '%-36s %s' % [image.id.to_s, image.name]
      expect(ui).to receive(:info).with formatted_line
    end
    action.call(env)
  end

  it 'continues the middleware chain' do
    expect(app).to receive(:call).with(env)
    action.call(env)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vagrant-profitbricks-1.0.0 spec/vagrant-profitbricks/actions/list_images_spec.rb