summaryrefslogtreecommitdiffstats
path: root/spec/unit/util/resource_template_spec.rb
blob: b4d529e5de3bea37bc892f69997d71b6a95f4690 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env ruby

require File.dirname(__FILE__) + '/../../spec_helper'

require 'puppet/util/resource_template'

describe Puppet::Util::ResourceTemplate do
    describe "when initializing" do
        it "should fail if the template does not exist" do
            FileTest.expects(:exist?).with("/my/template").returns false
            lambda { Puppet::Util::ResourceTemplate.new("/my/template", mock('resource')) }.should raise_error(ArgumentError)
        end

        it "should not create the ERB template" do
            ERB.expects(:new).never
            FileTest.expects(:exist?).with("/my/template").returns true
            Puppet::Util::ResourceTemplate.new("/my/template", mock('resource'))
        end
    end

    describe "when evaluating" do
        before do
            FileTest.stubs(:exist?).returns true
            File.stubs(:read).returns "eh"

            @template = stub 'template', :result => nil
            ERB.stubs(:new).returns @template

            @resource = mock 'resource'
            @wrapper = Puppet::Util::ResourceTemplate.new("/my/template", @resource)
        end

        it "should set all of the resource's parameters as instance variables" do
            @resource.expects(:to_hash).returns(:one => "uno", :two => "dos")
            @template.expects(:result).with do |bind|
                eval("@one", bind) == "uno" and eval("@two", bind) == "dos"
            end
            @wrapper.evaluate
        end

        it "should create a template instance with the contents of the file" do
            File.expects(:read).with("/my/template").returns "yay"
            ERB.expects(:new).with("yay", 0, "-").returns(@template)

            @wrapper.stubs :set_resource_variables

            @wrapper.evaluate
        end

        it "should return the result of the template" do
            @wrapper.stubs :set_resource_variables

            @wrapper.expects(:binding).returns "mybinding"
            @template.expects(:result).with("mybinding").returns "myresult"
            @wrapper.evaluate.should == "myresult"
        end
    end
end