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