summaryrefslogtreecommitdiffstats
path: root/spec/unit/rails/resource.rb
blob: 9e2ff8cd2a98aa9bdce3fdcd8ebb651e6b1593ba (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env ruby

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

describe "Puppet::Rails::Resource" do
    confine "Cannot test without ActiveRecord" => Puppet.features.rails?

    def column(name, type)
        ActiveRecord::ConnectionAdapters::Column.new(name, nil, type, false)
    end

    before do
        require 'puppet/rails/resource'

        # Stub this so we don't need access to the DB.
        Puppet::Rails::Resource.stubs(:columns).returns([column("title", "string"), column("restype", "string"), column("exported", "boolean")])
    end

    describe "when creating initial resource arguments" do
        it "should set the restype to the resource's type" do
            Puppet::Rails::Resource.rails_resource_initial_args(Puppet::Resource.new(:file, "/file"))[:restype].should == "File"
        end

        it "should set the title to the resource's title" do
            Puppet::Rails::Resource.rails_resource_initial_args(Puppet::Resource.new(:file, "/file"))[:title].should == "/file"
        end

        it "should set the line to the resource's line if one is available" do
            resource = Puppet::Resource.new(:file, "/file")
            resource.line = 50

            Puppet::Rails::Resource.rails_resource_initial_args(resource)[:line].should == 50
        end

        it "should set 'exported' to true of the resource is exported" do
            resource = Puppet::Resource.new(:file, "/file")
            resource.exported = true

            Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_true
        end

        it "should set 'exported' to false of the resource is not exported" do
            resource = Puppet::Resource.new(:file, "/file")
            resource.exported = false

            Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_false

            resource = Puppet::Resource.new(:file, "/file")
            resource.exported = nil

            Puppet::Rails::Resource.rails_resource_initial_args(resource)[:exported].should be_false
        end
    end

    describe "when merging in a parser resource" do
        before do
            @parser = mock 'parser resource'

            @resource = Puppet::Rails::Resource.new
            [:merge_attributes, :merge_parameters, :merge_tags, :save].each { |m| @resource.stubs(m) }
        end

        it "should merge the attributes" do
            @resource.expects(:merge_attributes).with(@parser)

            @resource.merge_parser_resource(@parser)
        end

        it "should merge the parameters" do
            @resource.expects(:merge_parameters).with(@parser)

            @resource.merge_parser_resource(@parser)
        end

        it "should merge the tags" do
            @resource.expects(:merge_tags).with(@parser)

            @resource.merge_parser_resource(@parser)
        end

        it "should save itself" do
            @resource.expects(:save)

            @resource.merge_parser_resource(@parser)
        end
    end
end