class Rspec::Generators::ScaffoldGenerator

def banner

def banner
  self.class.banner
end

def copy_view(view)

def copy_view(view)
  template "#{view}_spec.rb",
           File.join("spec/views", controller_file_path, "#{view}.html.#{options[:template_engine]}_spec.rb")
end

def generate_controller_spec

def generate_controller_spec
  return unless options[:controller_specs]
  template 'controller_spec.rb',
           File.join('spec/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb")
end

def generate_routing_spec

def generate_routing_spec
  return unless options[:routing_specs]
  template 'routing_spec.rb',
    File.join('spec/routing', controller_class_path, "#{controller_file_name}_routing_spec.rb")
end

def generate_view_specs

def generate_view_specs
  return unless options[:view_specs]
  copy_view :edit
  copy_view :index unless options[:singleton]
  copy_view :new
  copy_view :show
end

def mock_file_name(hash=nil)


called, it will be the one used.
If another ORM is being used and another method instead of save is

#=> mock_user(:save => true)
mock_file_name(:save => true)

value as response. So, for ActiveRecord and file name "User":
If a hash is given, it uses the hash key as the ORM method and the

it returns mock_user.
Returns the name of the mock. For example, if the file name is user,
def mock_file_name(hash=nil)
  if hash
    method, and_return = hash.to_a.first
    method = orm_instance.send(method).split('.').last.gsub(/\(.*?\)/, '')
    "mock_#{file_name}(:#{method} => #{and_return})"
  else
    "mock_#{file_name}"
  end
end

def params

def params
  "{'these' => 'params'}"
end

def should_receive!(chain)


#=> User.should_receive(:get).with(37)
should! orm_class.find(User, "37")

For Datamapper:

#=> User.should_receive(:find).with(37)
should! orm_class.find(User, "37")

Receives the ORM chain and convert to expects. For ActiveRecord:
def should_receive!(chain)
  stub_or_should_chain(:should_receive, chain)
end

def stub!(chain)


#=> User.stub!(:get).with(37)
stub! orm_class.find(User, "37")

For Datamapper:

#=> User.stub!(:find).with(37)
stub! orm_class.find(User, "37")

Receives the ORM chain and convert to stub. For ActiveRecord:
def stub!(chain)
  stub_or_should_chain(:stub, chain)
end

def stub_or_should_chain(mode, chain)

def stub_or_should_chain(mode, chain)
  receiver, method = chain.split(".")
  method.gsub!(/\((.*?)\)/, '')
  response = "#{receiver}.#{mode}(:#{method})"
  response << ".with(#{$1})" unless $1.blank?
  response
end

def value_for(attribute)

def value_for(attribute)
  case attribute.type
  when :string
    "#{attribute.name.titleize}".inspect
  else
    attribute.default.inspect
  end
end

def webrat?

def webrat?
  options[:webrat_matchers] || @webrat_matchers_requested
end