Sha256: 67c8752ab15e2944a736bc325811f0169a6328db75df2f91474cc17424280766

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 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 HaveCall
    attr_reader :method, :args

    def initialize(method, args = nil)
      @method = method.to_s
      @args = args
    end

    def matches?(content)
      content =~ /#{method}\s+#{args_expr}/m
    end          
  
    def failure_message
      return "Expected there to be a call to #{method} with args #{args}, but there wasn't" if args
      "Expected there to be a call to #{method}, but there wasn't"
    end 
    
    def negative_failure_message                                      
      return "Did not expect there to be a call to #{method} with args #{args}, but there was" if args
      "Did not expect there to be a call to #{method}, but there was"
    end
             
    protected
    
    def args_expr
      args ? "(\()?\s*#{args}\s*(\))?" : ''
    end      
               
  end
  
  def have_call(method, args = nil)
    HaveCall.new(method, args)
  end  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
generator-spec-0.4.1 lib/rspec_for_generators/matchers/content/have_call.rb
generator-spec-0.4.0 lib/rspec_for_generators/matchers/content/have_call.rb
generator-spec-0.3.5 lib/rspec_for_generators/matchers/content/have_call.rb
generator-spec-0.3.4 lib/rspec_for_generators/matchers/content/have_call.rb