Adds a new mechanism to load providers from any gem or file path.

* Adds ability to load only providers used in config file
This commit is contained in:
Corey Osman 2018-06-11 17:02:56 -07:00
parent 10bf6c8816
commit 66324f9c33
13 changed files with 319 additions and 14 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