module RSpec::RubyContentMatchers class HaveClass attr_reader :klass, :type, :content def initialize(klass, type=nil) @klass = klass.to_s.camelize @type = type.to_s.camelize if type end def matches?(content) @content = content match_res = (content =~ /class\s+#{klass}#{type}\s+(.*)end/m) if block_given? && $1 ruby_content = $1.strip.extend(RSpec::RubyContent::Helpers) yield ruby_content end match_res end def failure_message puts "Content: #{content}" if RSpec::Generator.debug? "Expected there to be the class #{klass}" end def negative_failure_message puts "Content: #{content}" if RSpec::Generator.debug? "Did no expected there to be the class #{klass}" end end def have_class(klass, type = nil) HaveClass.new(klass, type) end def have_helper_class(klass) HaveClass.new(klass, :helper) end def have_controller_class(klass) HaveClass.new(klass, :controller) end end