spec/unit/action/deploy/module_spec.rb in r10k-3.1.1 vs spec/unit/action/deploy/module_spec.rb in r10k-3.2.0

- old
+ new

@@ -15,16 +15,112 @@ end it "can accept a no-force option" do described_class.new({:'no-force' => true}, []) end + + it 'can accept a generate-types option' do + described_class.new({ 'generate-types': true }, []) + end + + it 'can accept a puppet-path option' do + described_class.new({ 'puppet-path': '/nonexistent' }, []) + end end describe "with no-force" do subject { described_class.new({ config: "/some/nonexistent/path", :'no-force' => true}, [] )} it "tries to preserve local modifications" do expect(subject.force).to equal(false) + end + end + + describe 'generate-types' do + let(:deployment) do + R10K::Deployment.new( + sources: { + control: { + type: :mock, + basedir: '/some/nonexistent/path/control', + environments: %w[first second] + } + } + ) + end + + before do + allow(R10K::Deployment).to receive(:new).and_return(deployment) + end + + context 'with generate-types enabled' do + subject do + described_class.new( + { + config: '/some/nonexistent/path', + 'generate-types': true + }, + %w[first] + ) + end + + before do + allow(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block| + expect(environment.puppetfile).to receive(:modules).and_return( + [R10K::Module::Local.new(environment.name, '/fakedir', [], environment)] + ) + original.call(environment, &block) + end + end + + it 'generate_types is true' do + expect(subject.instance_variable_get(:@generate_types)).to eq(true) + end + + it 'only calls puppet generate types on environments with specified module' do + expect(subject).to receive(:visit_module).and_wrap_original do |original, mod, &block| + if mod.name == 'first' + expect(mod.environment).to receive(:generate_types!) + else + expect(mod.environment).not_to receive(:generate_types!) + end + original.call(mod, &block) + end.twice + subject.call + end + end + + context 'with generate-types disabled' do + subject do + described_class.new( + { + config: '/some/nonexistent/path', + 'generate-types': false + }, + %w[first] + ) + end + + it 'generate_types is false' do + expect(subject.instance_variable_get(:@generate_types)).to eq(false) + end + + it 'does not call puppet generate types' do |it| + expect(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block| + expect(environment).not_to receive(:generate_types!) + original.call(environment, &block) + end.twice + subject.call + end + end + end + + describe 'with puppet-path' do + + subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-path': '/nonexistent' }, []) } + + it 'sets puppet_path' do + expect(subject.instance_variable_get(:@puppet_path)).to eq('/nonexistent') end end end