4
provider = Puppet::Type.type(:package).provider(:yum)
8
# Create a mock resource
9
@resource = stub 'resource'
10
@resource.stubs(:[]).with(:name).returns 'mypackage'
11
@provider = provider.new(@resource)
12
@provider.stubs(:resource).returns @resource
13
@provider.stubs(:yum).returns 'yum'
14
@provider.stubs(:rpm).returns 'rpm'
15
@provider.stubs(:get).with(:name).returns 'mypackage'
16
@provider.stubs(:get).with(:version).returns '1'
17
@provider.stubs(:get).with(:release).returns '1'
18
@provider.stubs(:get).with(:arch).returns 'i386'
20
# provider should repond to the following methods
21
[:install, :latest, :update, :purge].each do |method|
22
it "should have a(n) #{method}" do
23
@provider.should respond_to(method)
27
describe 'when installing' do
28
it 'should call yum install for :installed' do
29
@resource.stubs(:should).with(:ensure).returns :installed
30
@provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :install, 'mypackage')
33
it 'should use :install to update' do
34
@provider.expects(:install)
37
it 'should be able to set version' do
38
@resource.stubs(:should).with(:ensure).returns '1.2'
39
@provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :install, 'mypackage-1.2')
40
@provider.stubs(:query).returns :ensure => '1.2'
43
it 'should be able to downgrade' do
44
@resource.stubs(:should).with(:ensure).returns '1.0'
45
@provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :downgrade, 'mypackage-1.0')
46
@provider.stubs(:query).returns(:ensure => '1.2').then.returns(:ensure => '1.0')
51
describe 'when uninstalling' do
52
it 'should use erase to purge' do
53
@provider.expects(:yum).with('-y', :erase, 'mypackage')
56
it 'should use rpm to uninstall' do
57
@provider.expects(:rpm).with('-e', 'mypackage-1-1.i386')
62
it 'should be versionable' do
63
provider.should be_versionable