Adds a new mechanism to load providers from any gem or file path. (#263)

* Adds ability to load only providers used in config file
This commit is contained in:
Corey Osman 2018-07-24 16:35:18 -07:00 committed by mattkirby
parent 0a769b8901
commit 2daa5244b8
13 changed files with 316 additions and 15 deletions

View file

@ -0,0 +1,51 @@
require 'spec_helper'
require 'vmpooler/providers'
describe 'providers' do
let(:providers) do
Vmpooler::Providers.new
end
it '#correct class' do
expect(providers).to be_a Vmpooler::Providers
end
it '#load_all_providers' do
p = [
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'base.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'dummy.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')
]
expect(Vmpooler::Providers.load_all_providers).to eq(p)
end
it '#installed_providers' do
expect(Vmpooler::Providers.installed_providers).to eq(['vmpooler'])
end
it '#vmpooler_provider_gem_list' do
expect(providers.vmpooler_provider_gem_list).to be_a Array
expect(providers.vmpooler_provider_gem_list.first).to be_a Gem::Specification
end
it '#load_by_name' do
expect(Vmpooler::Providers.load_by_name('vsphere')).to eq([File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')])
end
it '#load only vpshere' do
expect(providers.load_from_gems('vsphere')).to eq([File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')])
end
it '#load all providers from gems' do
p = [
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'base.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'dummy.rb'),
File.join(project_root_dir, 'lib', 'vmpooler', 'providers', 'vsphere.rb')
]
expect(providers.load_from_gems).to eq(p)
end
end