spec/unit/berkshelf/init_generator_spec.rb in berkshelf-3.0.0.beta2 vs spec/unit/berkshelf/init_generator_spec.rb in berkshelf-3.0.0.beta3
- old
+ new
@@ -1,14 +1,18 @@
require 'spec_helper'
-describe Berkshelf::InitGenerator, vcr: { record: :new_episodes, serialize_with: :json } do
+describe Berkshelf::InitGenerator do
let(:target) { tmp_path.join("some_cookbook") }
let(:resolver) { double('resolver') }
let(:kitchen_generator) { double('kitchen-generator', invoke_all: nil) }
before do
Kitchen::Generator::Init.stub(:new).with(any_args()).and_return(kitchen_generator)
+ FileUtils.mkdir_p(target)
+ File.open(File.join(target, 'metadata.rb'), 'w') do |f|
+ f.write("name 'some_cookbook'")
+ end
end
context 'with default options' do
before do
capture(:stdout) {
@@ -23,12 +27,15 @@
file 'Gemfile' do
contains "gem 'berkshelf'"
end
file 'Vagrantfile' do
contains 'recipe[some_cookbook::default]'
+ contains ' config.omnibus.chef_version = :latest'
+ contains 'config.vm.box = "opscode_ubuntu-12.04_provisionerless"'
+ contains 'config.vm.box_url = "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box"'
end
- no_file 'chefignore'
+ file 'chefignore'
}
end
end
context 'with a chefignore' do
@@ -44,17 +51,21 @@
file 'chefignore'
}
end
end
+ context 'with no metadata' do
+ before do
+ FileUtils.rm(File.join(target, 'metadata.rb'))
+ expect {
+ Berkshelf::InitGenerator.new([target]).invoke_all
+ }.to raise_error(Berkshelf::NotACookbook)
+ end
+ end
+
context 'with a metadata entry in the Berksfile' do
before(:each) do
- Dir.mkdir target
- File.open(target.join('metadata.rb'), 'w+') do |f|
- f.write ''
- end
-
capture(:stdout) {
Berkshelf::InitGenerator.new([target], metadata_entry: true).invoke_all
}
end
@@ -158,9 +169,62 @@
end
it 'does not have a Vagrantfile' do
expect(target).to have_structure {
no_file 'Vagrantfile'
+ }
+ end
+ end
+
+ context "given the 'vagrant.omnibus.enabled' option set to false" do
+ before do
+ Berkshelf::Config.instance.vagrant.omnibus.enabled = false
+ capture(:stdout) {
+ Berkshelf::InitGenerator.new([target]).invoke_all
+ }
+ end
+
+ it "generates a Vagrantfile without the 'config.omnibus.chef_version' value set" do
+ expect(target).to have_structure {
+ file 'Vagrantfile' do
+ contains "#config.omnibus.chef_version"
+ end
+ }
+ end
+ end
+
+ context "given the 'vagrant.omnibus.version' option set" do
+ before do
+ Berkshelf::Config.instance.vagrant.omnibus.enabled = true
+ Berkshelf::Config.instance.vagrant.omnibus.version = "11.4.4"
+ capture(:stdout) {
+ Berkshelf::InitGenerator.new([target]).invoke_all
+ }
+ end
+
+ it "generates a Vagrantfile with the 'config.omnibus.chef_version' value set" do
+ expect(target).to have_structure {
+ file 'Vagrantfile' do
+ contains " config.omnibus.chef_version = \"11.4.4\""
+ end
+ }
+ end
+ end
+
+ context "given the 'vagrant.omnibus.version' option set to 'latest'" do
+ before do
+ Berkshelf::Config.instance.vagrant.omnibus.enabled = true
+ Berkshelf::Config.instance.vagrant.omnibus.version = "latest"
+ capture(:stdout) {
+ Berkshelf::InitGenerator.new([target]).invoke_all
+ }
+ end
+
+ it "generates a Vagrantfile with the 'config.omnibus.chef_version' value set to :latest" do
+ expect(target).to have_structure {
+ file 'Vagrantfile' do
+ contains " config.omnibus.chef_version = :latest"
+ end
}
end
end
context 'with the chef_minitest option true' do