0bb5b9722a15ac8dfc30be0b7011e2f1740d182a
[packages/precise/mcollective.git] / spec / unit / generators / agent_generator_spec.rb
1 #! /usr/bin/env rspec
2
3 require 'spec_helper'
4
5 module MCollective
6   module Generators
7       describe AgentGenerator do
8
9         describe "#create_ddl" do
10
11           before :each do
12             AgentGenerator.any_instance.stubs(:create_plugin_content)
13             AgentGenerator.any_instance.stubs(:create_plugin_string)
14             AgentGenerator.any_instance.stubs(:write_plugins)
15             AgentGenerator.any_instance.expects(:create_metadata_string).returns("metadata\n")
16           end
17
18           it "should create a ddl with nothing but metadata if no actions are specified" do
19             result = AgentGenerator.new("foo").ddl
20             result.should == "metadata\n"
21           end
22
23           it "should add action strings to metadata if there are actions specfied" do
24             result = AgentGenerator.new("foo", ["action1", "action2"]).ddl
25             expected = File.read(File.join(File.dirname(__FILE__), "snippets", "agent_ddl"))
26             result.should == expected
27           end
28         end
29
30         describe "#create_plugin_content" do
31           before :each do
32             AgentGenerator.any_instance.stubs(:create_plugin_string)
33             AgentGenerator.any_instance.stubs(:write_plugins)
34             AgentGenerator.any_instance.stubs(:create_metadata_string).returns("metadata\n")
35             AgentGenerator.any_instance.stubs(:create_ddl)
36           end
37
38           it "should create the correct pluginf ile content with actions if they are specified" do
39             AgentGenerator.any_instance.stubs(:create_metadata_string).returns("meta\n")
40             result = AgentGenerator.new("foo", ["action1", "action2"]).content
41             result.should == "      action \"action1\" do\n      end\n\n      action \"action2\" do\n      end\n"
42           end
43         end
44
45         describe "#action_help" do
46           before :each do
47             AgentGenerator.any_instance.stubs(:create_plugin_content)
48             AgentGenerator.any_instance.stubs(:create_plugin_string)
49             AgentGenerator.any_instance.stubs(:write_plugins)
50             AgentGenerator.any_instance.stubs(:create_metadata_string).returns("metadata\n")
51           end
52
53           it "should load and return the action_help snippet" do
54             erb = mock
55             erb.stubs(:result).returns("result")
56             File.stubs(:dirname).returns("/tmp")
57             File.expects(:read).with("/tmp/templates/action_snippet.erb").returns("result")
58             ERB.expects(:new).with("result").returns(erb)
59             AgentGenerator.new("foo", ["action"])
60           end
61
62           it "should raise an error if the action_help snippet does not exist" do
63             File.stubs(:dirname).returns("/tmp")
64             File.stubs(:read).raises(Errno::ENOENT, "No such file or directory")
65             expect{
66               AgentGenerator.new("foo", ["action"])
67             }.to raise_error(Errno::ENOENT)
68           end
69         end
70       end
71   end
72 end