summaryrefslogtreecommitdiff
path: root/spec/functions/ensure_packages_spec.rb
blob: 5d976843e2c801076cb3213c19c3e35072c45300 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
require 'spec_helper'

describe 'ensure_packages' do
  it { is_expected.not_to eq(nil) }
  it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError) }
  it {
    pending("should not accept numbers as arguments")
    is_expected.to run.with_params(1).and_raise_error(Puppet::ParseError)
  }
  it {
    pending("should not accept numbers as arguments")
    is_expected.to run.with_params(["packagename", 1]).and_raise_error(Puppet::ParseError)
  }
  it { is_expected.to run.with_params("packagename") }
  it { is_expected.to run.with_params(["packagename1", "packagename2"]) }

  context 'given a catalog with "package { puppet: ensure => absent }"' do
    let(:pre_condition) { 'package { puppet: ensure => absent }' }

    describe 'after running ensure_package("facter")' do
      before { subject.call(['facter']) }

      # this lambda is required due to strangeness within rspec-puppet's expectation handling
      it { expect(lambda { catalogue }).to contain_package('puppet').with_ensure('absent') }
      it { expect(lambda { catalogue }).to contain_package('facter').with_ensure('present') }
    end

    describe 'after running ensure_package("facter", { "provider" => "gem" })' do
      before { subject.call(['facter', { "provider" => "gem" }]) }

      # this lambda is required due to strangeness within rspec-puppet's expectation handling
      it { expect(lambda { catalogue }).to contain_package('puppet').with_ensure('absent').without_provider() }
      it { expect(lambda { catalogue }).to contain_package('facter').with_ensure('present').with_provider("gem") }
    end
  end

  context 'given hash of packages' do
    before { subject.call([{"foo" => { "provider" => "rpm" }, "bar" => { "provider" => "gem" }}, { "ensure" => "present"}]) }

    # this lambda is required due to strangeness within rspec-puppet's expectation handling
    it { expect(lambda { catalogue }).to contain_package('foo').with({'provider' => 'rpm', 'ensure' => 'present'}) }
    it { expect(lambda { catalogue }).to contain_package('bar').with({'provider' => 'gem', 'ensure' => 'present'}) }
  end
end