--- /dev/null
+#! /usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+ module Generators
+ describe AgentGenerator do
+
+ describe "#create_ddl" do
+
+ before :each do
+ AgentGenerator.any_instance.stubs(:create_plugin_content)
+ AgentGenerator.any_instance.stubs(:create_plugin_string)
+ AgentGenerator.any_instance.stubs(:write_plugins)
+ AgentGenerator.any_instance.expects(:create_metadata_string).returns("metadata\n")
+ end
+
+ it "should create a ddl with nothing but metadata if no actions are specified" do
+ result = AgentGenerator.new("foo").ddl
+ result.should == "metadata\n"
+ end
+
+ it "should add action strings to metadata if there are actions specfied" do
+ result = AgentGenerator.new("foo", ["action1", "action2"]).ddl
+ expected = File.read(File.join(File.dirname(__FILE__), "snippets", "agent_ddl"))
+ result.should == expected
+ end
+ end
+
+ describe "#create_plugin_content" do
+ before :each do
+ AgentGenerator.any_instance.stubs(:create_plugin_string)
+ AgentGenerator.any_instance.stubs(:write_plugins)
+ AgentGenerator.any_instance.stubs(:create_metadata_string).returns("metadata\n")
+ AgentGenerator.any_instance.stubs(:create_ddl)
+ end
+
+ it "should create the correct pluginf ile content with actions if they are specified" do
+ AgentGenerator.any_instance.stubs(:create_metadata_string).returns("meta\n")
+ result = AgentGenerator.new("foo", ["action1", "action2"]).content
+ result.should == " action \"action1\" do\n end\n\n action \"action2\" do\n end\n"
+ end
+ end
+
+ describe "#action_help" do
+ before :each do
+ AgentGenerator.any_instance.stubs(:create_plugin_content)
+ AgentGenerator.any_instance.stubs(:create_plugin_string)
+ AgentGenerator.any_instance.stubs(:write_plugins)
+ AgentGenerator.any_instance.stubs(:create_metadata_string).returns("metadata\n")
+ end
+
+ it "should load and return the action_help snippet" do
+ erb = mock
+ erb.stubs(:result).returns("result")
+ File.stubs(:dirname).returns("/tmp")
+ File.expects(:read).with("/tmp/templates/action_snippet.erb").returns("result")
+ ERB.expects(:new).with("result").returns(erb)
+ AgentGenerator.new("foo", ["action"])
+ end
+
+ it "should raise an error if the action_help snippet does not exist" do
+ File.stubs(:dirname).returns("/tmp")
+ File.stubs(:read).raises(Errno::ENOENT, "No such file or directory")
+ expect{
+ AgentGenerator.new("foo", ["action"])
+ }.to raise_error(Errno::ENOENT)
+ end
+ end
+ end
+ end
+end