Sha256: c57a2f00503dd75ef26052b5706ae623443672abbb1f44d47aade63186546b55

Contents?: true

Size: 1.41 KB

Versions: 2

Compression:

Stored size: 1.41 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
  module RubyContentMatchers
    class HaveMethod

      attr_reader :method

      def initialize(method, type)
        @type = type
        @method = method.to_s
      end

      def matches?(content)      
        @content = content
        case @type
        when :class
          @content =~ /def\s+self.#{method}\s*(\(.+\))?(.*?)/m
        else
          @content =~ /def\s+#{method}\s*(\(.+\))?(.*?)/m
        end
      end          
    
      def failure_message
        return "Expected there to be the class method #{method}, but there wasn't" if @type == :class
        "Expected there to be the method #{method}, but there wasn't"        
      end 
      
      def negative_failure_message                                      
        return "Did not expect there to be the method #{method}, but there was" if @type == :class
        "Did not expect there to be the method #{method}, but there was"
      end
                 
    end
    
    def have_method(method, type = nil)
      HaveMethod.new(method, type)
    end
    alias_method :have_instance_method, :have_method 
    
  end  
end


Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rspec_for_generators-0.3.1 lib/rspec_for_generators/matchers/content/have_method.rb
rspec_for_generators-0.3.0 lib/rspec_for_generators/matchers/content/have_method.rb