Spec tests for p4 provider
authorPaul Allen <pallen@perforce.com>
Thu, 12 Jun 2014 16:50:55 +0000 (17:50 +0100)
committerPaul Allen <pallen@perforce.com>
Fri, 20 Jun 2014 11:16:29 +0000 (12:16 +0100)
Test create, destroy and exists? access points.

spec/unit/puppet/provider/vcsrepo/p4_spec.rb [new file with mode: 0644]

diff --git a/spec/unit/puppet/provider/vcsrepo/p4_spec.rb b/spec/unit/puppet/provider/vcsrepo/p4_spec.rb
new file mode 100644 (file)
index 0000000..822106d
--- /dev/null
@@ -0,0 +1,73 @@
+require 'spec_helper'
+
+describe Puppet::Type.type(:vcsrepo).provider(:p4) do
+
+  let(:resource) { Puppet::Type.type(:vcsrepo).new({
+    :name     => 'test',
+    :ensure   => :present,
+    :provider => :p4,
+    :path     => '/tmp/vcsrepo',
+  })}
+
+  let(:provider) { resource.provider }
+
+  before :each do
+    Puppet::Util.stubs(:which).with('p4').returns('/usr/local/bin/p4')
+  end
+
+       spec = {
+    :input => "Root: /tmp/vcsrepo\nDescription: Generated by Puppet VCSrepo\n\nView:\n",
+    :marshal => false
+  }
+
+  describe 'creating' do
+    context 'with source and revision' do
+      it "should execute 'p4 sync' with the revision" do
+        resource[:source] = 'something'
+        resource[:p4client] = 'client_ws'
+        resource[:revision] = '1'
+        provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({})
+        provider.expects(:p4).with(['client', '-i'], spec)
+        provider.expects(:p4).with(['sync', resource.value(:source) + "@" + resource.value(:revision)])
+        provider.create
+      end
+    end
+
+    context 'without revision' do
+      it "should just execute 'p4 sync' without a revision" do
+        resource[:source] = 'something'
+        resource[:p4client] = 'client_ws'
+        provider.expects(:p4).with(['client', '-o', resource.value(:p4client)]).returns({})
+        provider.expects(:p4).with(['client', '-i'], spec)
+        provider.expects(:p4).with(['sync', resource.value(:source)])
+        provider.create
+      end
+    end
+
+    context "when a client and source are not given" do
+      it "should execute 'p4 client'" do
+       provider.expects(:p4).with(['client', '-o', "puppet-51f0a4b45dbfc10614df94f0a189c16f"]).returns({})
+       provider.expects(:p4).with(['client', '-i'], spec)
+       provider.create
+      end
+    end
+  end
+
+  describe 'destroying' do
+    it "it should remove the directory" do
+       resource[:p4client] = 'test_client'
+       provider.expects(:p4).with(['client', '-d', '-f', resource.value(:p4client)])
+      expects_rm_rf
+      provider.destroy
+    end
+  end
+
+  describe "checking existence" do
+    it "should check for the directory" do
+      provider.expects(:p4).with(['info'], {:marshal => false}).returns({})
+      provider.expects(:p4).with(['where', resource.value(:path) + "..."], {:raise => false}).returns({})
+      provider.exists?
+    end
+  end
+
+end