ndlib-on-rspec 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,7 +18,15 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- Take a look at the /spec directory.
21
+ Take a look at the /spec directory for greater clarity
22
+
23
+ ### :alias_from
24
+
25
+ object.should alias_from(:one_method).to(:another)
26
+
27
+ ### :delegate
28
+
29
+ object.should delegate(:blog_name).to(:blog).via(:name)
22
30
 
23
31
  ## Contributing
24
32
 
@@ -0,0 +1,35 @@
1
+ RSpec::Matchers.define :have_method do |method_name|
2
+ match do |object|
3
+ @method_name = method_name
4
+ @arity ||= '0'.to_i
5
+ if %r{^(?<prefix>\.|\#)(?<normalized_method_name>.*)} =~ method_name.to_s
6
+ @normalized_method_name = normalized_method_name
7
+ @klass = object.is_a?(Class) ? object : object.class
8
+ if prefix == '.'
9
+ @klass.method(@normalized_method_name).arity == @arity
10
+ elsif prefix == '#'
11
+ @klass.instance_method(@normalized_method_name).arity == @arity
12
+ end
13
+ else
14
+ @method_name = "##{method_name}"
15
+ @klass = object.class
16
+ @normalized_method_name = method_name
17
+ @object = object
18
+ @object.method(@normalized_method_name).arity == @arity
19
+ end
20
+ end
21
+
22
+ description do
23
+ "have_method #{@method_name} [arity:#{@arity}]"
24
+ end
25
+
26
+ failure_message_for_should do |text|
27
+ "expected #{@klass} to have_method #{@method_name} [arity:#{@arity}]"
28
+ end
29
+
30
+ failure_message_for_should_not do |text|
31
+ "expected #{@klass} not to delegate #{@method_name} [arity:#{@arity}]"
32
+ end
33
+
34
+ chain(:with_arity) { |arity| @arity = arity }
35
+ end
@@ -1,3 +1,3 @@
1
1
  module NdlibOnRspec
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,57 @@
1
+ require "spec_helper"
2
+
3
+ describe RSpec::Matchers, "have_method" do
4
+ subject { Comment.new }
5
+
6
+ describe '#have_method' do
7
+ context 'without arity' do
8
+
9
+ it 'handles have_method with instance method lookup' do
10
+ subject.should have_method('#blog_name')
11
+ end
12
+
13
+ it 'handles have_method with instance method lookup' do
14
+ subject.should have_method(:blog_name)
15
+ end
16
+
17
+ it 'handles have_method with class method' do
18
+ subject.should have_method('.a_class_method_name')
19
+ end
20
+
21
+ it 'handles have_method with assumed instance method for class' do
22
+ subject.class.should have_method(:a_class_method_name)
23
+ end
24
+
25
+ it 'handles have_method with explicit instance method for class' do
26
+ subject.class.should have_method(".a_class_method_name")
27
+ end
28
+
29
+ end
30
+
31
+ context 'with arity' do
32
+ subject do
33
+ Class.new do
34
+ def method_with_one_param(one)
35
+ end
36
+ def method_with_splat_arg(*args)
37
+ end
38
+ end.new
39
+ end
40
+ it 'handles arity with explicit arg' do
41
+ subject.should have_method("#method_with_one_param").with_arity(1)
42
+ end
43
+ it 'handles defined method with wrong arity' do
44
+ lambda {
45
+ subject.should have_method("#method_with_one_param").with_arity(2)
46
+ }.should(
47
+ raise_error(
48
+ RSpec::Expectations::ExpectationNotMetError,
49
+ %r{have_method \#method_with_one_param \[arity\:2\]}
50
+ ))
51
+ end
52
+ it 'handles arity with splat args' do
53
+ subject.should have_method("#method_with_splat_arg").with_arity(-1)
54
+ end
55
+ end
56
+ end
57
+ end
@@ -28,6 +28,11 @@ class Blog
28
28
  end
29
29
  end
30
30
  class Comment
31
+
32
+ def self.a_class_method_name
33
+ 'a_class_method_name'
34
+ end
35
+
31
36
  def parent
32
37
  @parent ||= Comment.new
33
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndlib-on-rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-07 00:00:00.000000000 Z
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -43,10 +43,12 @@ files:
43
43
  - lib/ndlib-on-rspec.rb
44
44
  - lib/ndlib-on-rspec/alias_from_matcher.rb
45
45
  - lib/ndlib-on-rspec/delegate_matcher.rb
46
+ - lib/ndlib-on-rspec/have_method_matcher.rb
46
47
  - lib/ndlib-on-rspec/version.rb
47
48
  - ndlib-on-rspec.gemspec
48
49
  - spec/ndlib-on-rspec/alias_from_matcher_spec.rb
49
50
  - spec/ndlib-on-rspec/delegate_matcher_spec.rb
51
+ - spec/ndlib-on-rspec/have_method_matcher_spec.rb
50
52
  - spec/spec_helper.rb
51
53
  homepage: http://github.com/ndlib/ndlib-on-rspec
52
54
  licenses: []
@@ -75,5 +77,5 @@ summary: A handful of helpful Rspec matchers intended for reuse
75
77
  test_files:
76
78
  - spec/ndlib-on-rspec/alias_from_matcher_spec.rb
77
79
  - spec/ndlib-on-rspec/delegate_matcher_spec.rb
80
+ - spec/ndlib-on-rspec/have_method_matcher_spec.rb
78
81
  - spec/spec_helper.rb
79
- has_rdoc: