Sha256: 9d46390986c7d8a451a9523a170849e6ef99f26e115427a8c79ceb63aff0dccf

Contents?: true

Size: 1.55 KB

Versions: 7

Compression:

Stored size: 1.55 KB

Contents

# This method tries to see if a specific method is contained in the generated file.
# It can operate (should) on either a file name or the raw content 
#
#   generated_file_name.should have_method "hello" # 'my/path/say_hello.rb'.should have_method "hello"
#
#   say_hello_file_content.should have_method "hello"
#
module RSpec::RubyContentMatchers
  class HaveMethod < RSpec::RubyContentMatcher
    attr_reader :method, :type, :args

    def initialize(method, type=nil, options = {})
      @method = method.to_s
      super method
      @type = type      
      @args = options[:args]
    end

    def index
      1
    end          
  
    def failure_message
      super
      "Expected there to be the #{class_msg} method #{method}, but there wasn't"
    end 
    
    def negative_failure_message                                      
      super
      "Did not expect there to be the #{class_msg} method #{method}, but there was"
    end

    protected

    def class_msg
      (type == :class) ? 'class' : ''
    end

    def main_expr
      'def' + SPACES + "#{self_expr}#{method}#{args_expr}" + ANY_GROUP
    end

    def args_expr
      return super if args
      any_args_expr
    end
       
    def self_expr 
      type == :class ? 'self.' : ''
    end
            
    def alt_end
      'def'
    end
  end
  
  def have_method(method, type = nil)
    HaveMethod.new(method, type)
  end  

  def have_class_method(method)
    have_method method, :class
  end  

  def have_args_method(method, options = {})
    have_method method, options[:type], options
  end  

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
code-spec-0.2.8 lib/code_spec/matchers/have_method.rb
code-spec-0.2.7 lib/code_spec/matchers/have_method.rb
code-spec-0.2.6 lib/code_spec/matchers/have_method.rb
code-spec-0.2.5 lib/code_spec/matchers/have_method.rb
code-spec-0.2.4 lib/code_spec/matchers/have_method.rb
code-spec-0.2.3 lib/code_spec/matchers/have_method.rb
code-spec-0.2.2 lib/code_spec/matchers/have_method.rb