From 7faf27ce72d4b2d64d94f0dda1ad4e55aec99fd2 Mon Sep 17 00:00:00 2001 From: Rein Henrichs Date: Wed, 23 Jun 2010 15:49:53 -0700 Subject: [#4064] Modify confine to also allow a message and a block containing the test. This way the test can be evaluated lazily when needed. Adds tests and documentation. --- spec/spec_specs/runnable_spec.rb | 95 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 spec/spec_specs/runnable_spec.rb (limited to 'spec') diff --git a/spec/spec_specs/runnable_spec.rb b/spec/spec_specs/runnable_spec.rb new file mode 100644 index 000000000..fd2e48888 --- /dev/null +++ b/spec/spec_specs/runnable_spec.rb @@ -0,0 +1,95 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe PuppetTest::RunnableTest do + before do + @runnable_test = Class.new.extend(PuppetTest::RunnableTest) + end + + describe "#confine" do + subject { @runnable_test } + + it "should accept a hash" do + subject.confine({}).should_not raise_error(ArgumentError) + end + + it "should accept a message and a block" do + subject.confine(""){}.should_not raise_error(ArgumentError) + end + + end + + describe "#runnable?" do + describe "when the superclass is not runnable" do + before { @runnable_test.stubs(:superclass).returns(stub("unrunnable superclass", :runnable? => false)) } + subject { @runnable_test.runnable? } + + it { should be_false } + end + + describe "when a confine is false" do + before { @runnable_test.confine(:message => false) } + subject { @runnable_test.runnable? } + + it { should be_false } + end + + describe "when a confine has a block that returns false" do + before { @runnable_test.confine(:message){ false } } + subject { @runnable_test.runnable? } + + it { should be_false } + end + + describe "when a confine is true and no false confines" do + before { @runnable_test.confine(:message => true) } + subject { @runnable_test.runnable? } + + it { should be_true } + end + + describe "when a confine has block that returns true and no false confines" do + before { @runnable_test.confine(:message){ true } } + subject { @runnable_test.runnable? } + + it { should be_true } + end + + end + + describe "#messages" do + describe "before runnable? is called" do + subject { @runnable_test.messages } + + it { should == [] } + end + + describe "when runnable? is called and returns false" do + before do + @runnable_test.confine(:message => false) + @runnable_test.runnable? + end + + subject { @runnable_test.messages } + + it "should include the failed confine's message" do + should include(:message) + end + + end + + describe "when runnable? is called whose block returns false" do + before do + @runnable_test.confine(:message){ false } + @runnable_test.runnable? + end + + subject { @runnable_test.messages } + + it "should include the failed confine's message" do + should include(:message) + end + + end + + end +end -- cgit