Sha256: 77b36605706ec80933e2e1e310907cb7b7dd9cd041dbf7e88f223f9d89c0f7f7

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

module RSpec::RubyContentMatchers
  class HaveBlock < RSpec::RubyContentMatcher
    attr_reader :name, :args, :block_args, :do_option, :end_option

    def initialize(name, options={})
      super options[:end] || name      
      @name = name.to_s
      @args = options[:args] 
      @do_option = options[:do].nil? ? true : options[:do]      
      @block_args = options[:block_args]
    end
  
    def failure_message   
      super
      return "Expected there to be a block #{name}#{args_msg}#{block_args_msg}, but there wasn't"
    end 
    
    def negative_failure_message  
      super
      return "Did not expect there to be a block #{name}#{args_msg}, but there was"
    end               
    
    protected

    def block_args_msg
      " and block arguments #{block_args}" if block_args
    end
    
    def indexes
      [0, 2]
    end

    def main_expr
      "#{name}" + SPACES + "#{args_expr}#{do_expr}" + ANY_GROUP
    end

    def do_expr
      do_option == false ? '' : 'do' + SPACES + "#{block_args_expr}"
    end

    def args_expr
      args ? '(\()?\s*' + args + '\s*(\))?\s+' : ''
    end      

    def block_args_expr
      block_args ? '\|\s*' + block_args + '\s*\|' : ''
    end    

    def alt_end
      'do'
    end
  end
  
  def have_block(name, options={})
    HaveBlock.new(name, options)
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
code-spec-0.1.0 lib/code_spec/matchers/have_block.rb
generator-spec-0.5.0 lib/generator_spec/matchers/content/have_block.rb
generator-spec-0.4.8 lib/generator_spec/matchers/content/have_block.rb
generator-spec-0.4.7 lib/generator_spec/matchers/content/have_block.rb