require 'spec_helper' describe Plugin do subject(:plugin) { Plugin.new } describe "#new" do context "with some infos" do subject(:plugin) { Plugin.new(infos) } let(:infos) { {:author => "John"} } its(:author) { should === infos[:author] } end end describe "#run" do it "should raise a NotImplementedError" do expect { plugin.run }.to raise_error(NotImplementedError) end end describe "#register_options" do after :each do if @exception expect { plugin.register_options(*@options) }.to raise_error(@exception) else plugin.register_options(*@options) plugin.registered_options.sort.should === @expected.sort end end context "when an option is not an Array" do it "should raise an error" do @options = [["-v", "--verbose", "It's a valid option"], "Not a valid one"] @exception = "Each option must be an array, String supplied" end end context "when options are Arrays" do it "should register the options" do @options = [["-v", "--verbose", "Verbose mode"], ["-u", "--url TARGET_URL"]] @expected = *@options end end end end