summaryrefslogtreecommitdiff
path: root/spec/mspec/spec/guards/feature_spec.rb
diff options
context:
space:
mode:
authoreregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 11:37:19 +0000
committereregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 11:37:19 +0000
commit80fdfbf8099d8e802b9faaef2eda1ffdb787d1ce (patch)
treeabe4d154d7577229a0b0eb48d358ae6d542cf7e3 /spec/mspec/spec/guards/feature_spec.rb
parentcbbe2fab8255223f2898489365b16a72d2c02946 (diff)
Update to ruby/mspec@7074b56
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/mspec/spec/guards/feature_spec.rb')
-rw-r--r--spec/mspec/spec/guards/feature_spec.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/mspec/spec/guards/feature_spec.rb b/spec/mspec/spec/guards/feature_spec.rb
index d14e5f8e67..8761cb2fbb 100644
--- a/spec/mspec/spec/guards/feature_spec.rb
+++ b/spec/mspec/spec/guards/feature_spec.rb
@@ -78,3 +78,43 @@ describe Object, "#with_feature" do
ScratchPad.recorded.should be_nil
end
end
+
+describe Object, "#without_feature" do
+ before :each do
+ ScratchPad.clear
+
+ @guard = FeatureGuard.new :encoding
+ FeatureGuard.stub(:new).and_return(@guard)
+ end
+
+ it "sets the name of the guard to :without_feature" do
+ without_feature(:encoding) { }
+ @guard.name.should == :without_feature
+ end
+
+ it "calls #unregister even when an exception is raised in the guard block" do
+ @guard.should_receive(:match?).and_return(false)
+ @guard.should_receive(:unregister)
+ lambda do
+ without_feature { raise Exception }
+ end.should raise_error(Exception)
+ end
+end
+
+describe Object, "#without_feature" do
+ before :each do
+ ScratchPad.clear
+ end
+
+ it "does not yield if the feature is enabled" do
+ MSpec.should_receive(:feature_enabled?).with(:encoding).and_return(true)
+ without_feature(:encoding) { ScratchPad.record :yield }
+ ScratchPad.recorded.should be_nil
+ end
+
+ it "yields if the feature is disabled" do
+ MSpec.should_receive(:feature_enabled?).with(:encoding).and_return(false)
+ without_feature(:encoding) { ScratchPad.record :yield }
+ ScratchPad.recorded.should == :yield
+ end
+end