Update hold.pp
[puppet-modules/puppetlabs-apt.git] / spec / defines / hold_spec.rb
1 require 'spec_helper'
2 describe 'apt::hold' do
3   let :facts do {
4       :osfamily   => 'Debian',
5       :lsbdistid  => 'Debian',
6       :lsbrelease => 'wheezy',
7   } end
8
9   let :title do
10     'vim'
11   end
12
13   let :default_params do {
14     :version => '1.1.1',
15   } end
16
17   describe 'default params' do
18     let :params do default_params end
19
20     it 'creates an apt preferences file' do
21       should contain_apt__hold(title).with({
22         :ensure   => 'present',
23         :package  => title,
24         :version  => params[:version],
25         :priority => 1001,
26       })
27
28       should contain_apt__pin("hold_#{title}").with({
29         :ensure   => 'present',
30         :packages => title,
31         :version  => params[:version],
32         :priority => 1001,
33       })
34     end
35   end
36
37   describe 'ensure => absent' do
38     let :params do default_params.merge({:ensure => 'absent',}) end
39
40     it 'creates an apt preferences file' do
41       should contain_apt__hold(title).with({
42         :ensure   => params[:ensure],
43       })
44
45       should contain_apt__pin("hold_#{title}").with({
46         :ensure   => params[:ensure],
47       })
48     end
49   end
50
51   describe 'priority => 990' do
52     let :params do default_params.merge({:priority => 990,}) end
53
54     it 'creates an apt preferences file' do
55       should contain_apt__hold(title).with({
56         :ensure   => 'present',
57         :package  => title,
58         :version  => params[:version],
59         :priority => params[:priority],
60       })
61
62       should contain_apt__pin("hold_#{title}").with({
63         :ensure   => 'present',
64         :packages => title,
65         :version  => params[:version],
66         :priority => params[:priority],
67       })
68     end
69   end
70
71   describe 'validation' do
72     context 'version => {}' do
73       let :params do { :version => {}, } end
74       it 'should fail' do
75         expect { subject }.to raise_error(/is not a string/)
76       end
77     end
78
79     context 'ensure => bananana' do
80       let :params do default_params.merge({:ensure => 'bananana',}) end
81       it 'should fail' do
82         expect { subject }.to raise_error(/does not match/)
83       end
84     end
85
86     context 'package => []' do
87       let :params do default_params.merge({:package => [],}) end
88       it 'should fail' do
89         expect { subject }.to raise_error(/is not a string/)
90       end
91     end
92
93     context 'priority => bananana' do
94       let :params do default_params.merge({:priority => 'bananana',}) end
95       it 'should fail' do
96         expect { subject }.to raise_error(/must be an integer/)
97       end
98     end
99   end
100 end