summaryrefslogtreecommitdiff
path: root/spec/mspec/spec/matchers/have_singleton_method_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/mspec/spec/matchers/have_singleton_method_spec.rb')
-rw-r--r--spec/mspec/spec/matchers/have_singleton_method_spec.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/spec/mspec/spec/matchers/have_singleton_method_spec.rb b/spec/mspec/spec/matchers/have_singleton_method_spec.rb
new file mode 100644
index 0000000000..57c37e01d9
--- /dev/null
+++ b/spec/mspec/spec/matchers/have_singleton_method_spec.rb
@@ -0,0 +1,45 @@
+require 'spec_helper'
+require 'mspec/expectations/expectations'
+require 'mspec/matchers'
+
+class HSMMSpecs
+ def self.singleton_method
+ end
+end
+
+describe HaveSingletonMethodMatcher do
+ it "inherits from MethodMatcher" do
+ HaveSingletonMethodMatcher.new(:m).should be_kind_of(MethodMatcher)
+ end
+
+ it "matches when the class has a singleton method" do
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
+ matcher.matches?(HSMMSpecs).should be_true
+ end
+
+ it "matches when the object has a singleton method" do
+ obj = double("HSMMSpecs")
+ def obj.singleton_method; end
+
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
+ matcher.matches?(obj).should be_true
+ end
+
+ it "provides a failure message for #should" do
+ matcher = HaveSingletonMethodMatcher.new :some_method
+ matcher.matches?(HSMMSpecs)
+ matcher.failure_message.should == [
+ "Expected HSMMSpecs to have singleton method 'some_method'",
+ "but it does not"
+ ]
+ end
+
+ it "provides a failure message for #should_not" do
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
+ matcher.matches?(HSMMSpecs)
+ matcher.negative_failure_message.should == [
+ "Expected HSMMSpecs NOT to have singleton method 'singleton_method'",
+ "but it does"
+ ]
+ end
+end