Spec tests for p4 provider
[puppet_vcsrepo.git] / spec / unit / puppet / provider / vcsrepo / p4_spec.rb
1 require 'spec_helper'
2
3 describe Puppet::Type.type(:vcsrepo).provider(:p4) do
4
5   let(:resource) { Puppet::Type.type(:vcsrepo).new({
6     :name     => 'test',
7     :ensure   => :present,
8     :provider => :p4,
9     :path     => '/tmp/vcsrepo',
10   })}
11
12   let(:provider) { resource.provider }
13
14   before :each do
15     Puppet::Util.stubs(:which).with('p4').returns('/usr/local/bin/p4')
16   end
17
18         spec = {
19     :input => "Root: /tmp/vcsrepo\nDescription: Generated by Puppet VCSrepo\n\nView:\n",
20     :marshal => false
21   }
22
23   describe 'creating' do
24     context 'with source and revision' do
25       it "should execute 'p4 sync' with the revision" do
26         resource[:source] = 'something'
27         resource[:p4client] = 'client_ws'
28         resource[:revision] = '1'
29         provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({})
30         provider.expects(:p4).with(['client', '-i'], spec)
31         provider.expects(:p4).with(['sync', resource.value(:source) + "@" + resource.value(:revision)])
32         provider.create
33       end
34     end
35
36     context 'without revision' do
37       it "should just execute 'p4 sync' without a revision" do
38         resource[:source] = 'something'
39         resource[:p4client] = 'client_ws'
40         provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({})
41         provider.expects(:p4).with(['client', '-i'], spec)
42         provider.expects(:p4).with(['sync', resource.value(:source)])
43         provider.create
44       end
45     end
46
47     context "when a client and source are not given" do
48       it "should execute 'p4 client'" do
49         provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({})
50         provider.expects(:p4).with(['client', '-i'], spec)
51         provider.create
52       end
53     end
54   end
55
56   describe 'destroying' do
57     it "it should remove the directory" do
58         resource[:p4client] = 'test_client'
59         provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)])
60       expects_rm_rf
61       provider.destroy
62     end
63   end
64
65   describe "checking existence" do
66     it "should check for the directory" do
67       provider.expects(:p4).with(['info'], {:marshal => false}).returns({})
68       provider.expects(:p4).with(['where', resource.value(:path) + "..."], {:raise => false}).returns({})
69       provider.exists?
70     end
71   end
72
73 end