Sha256: 94d1da636c0bef061cd93fe1297ebfb2424d7d6ced50fc91c328a0971318b1ad

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

module RSpec::RubyContentMatchers
  class IncludeModule
    attr_reader :module_name, :content

    def initialize module_name
      @module_name = module_name.to_s.camelize
    end

    def matches?(content)      
      @content = content
      match_res = (content =~ /include\s+#{module_name}/)
      if block_given? && match_res
        ruby_content = content.extend(RSpec::RubyContent::Helpers)
        yield ruby_content
      else
        match_res
      end
    end          
  
    def failure_message
      puts "Content: #{content}" if RSpec::Generator.debug?      
      "Expected there to be an inclusion of module #{module_name}"
    end 
    
    def negative_failure_message
      puts "Content: #{content}" if RSpec::Generator.debug?      
      "Did not expect there to be an inclusion of module #{module_name}"
    end
               
  end
  
  def include_module(module_name)
    IncludeModule.new(module_name)
  end    

  def be_dm_resource
    IncludeModule.new 'DataMapper::Resource'
  end    
  
  def be_document(type, options=nil)
    doc_type = options == :embedded ? 'EmbeddedDocument' : 'Document'
    doc_orm = case type 
    when :mongo_mapper
      'MongoMapper'
    when :mongoid
      'Mongoid'
    else
      raise ArgumentError, "Unknown document type #{type.inspect}"
    end    
    IncludeModule.new "#{doc_orm}::#{doc_type}"
  end
end  

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
generator-spec-0.4.3 lib/rspec_for_generators/matchers/content/include_module.rb