class ThoughtBot::Shoulda::Controller::ResourceOptions


Whenever possible, the resource attributes will be set to sensible defaults.
end
end
resource.destroy.flash = /removed/i
resource.update.flash = /updated/i
resource.create.flash = /created/i
resource.destroy.redirect = “users_url”
resource.update.redirect = “user_url(@user)”
resource.create.redirect = “user_url(@user)”
resource.update.params = { :name => “sue” }
resource.create.params = { :name => “bob”, :email => ‘bob@bob.com’, :age => 13}
resource.formats = [:html, :xml]
resource.actions = [:index, :show, :new, :edit, :update, :create, :destroy]
resource.parent = []
resource.object = :user
resource.klass = User
resource.identifier = :id
should_be_restful do |resource|
end
@user = User.find(:first)
…normal setup code…
def setup
fixtures :all
class UsersControllerTest < Test::Unit::TestCase
Example:
A ResourceOptions object is passed into should_be_restful in order to configure the tests for your controller.

def ensure_valid_members(ary, valid_members, name) # :nodoc:

:nodoc:
def ensure_valid_members(ary, valid_members, name)  # :nodoc:
  invalid = ary - valid_members
  raise ArgumentError, "Unsupported #{name}: #{invalid.inspect}" unless invalid.empty?
end

def initialize # :nodoc:

:nodoc:
def initialize # :nodoc:
  @create  = ActionOptions.new
  @update  = ActionOptions.new
  @destroy = ActionOptions.new
  @denied  = DeniedOptions.new
  @create.flash  ||= /created/i
  @update.flash  ||= /updated/i
  @destroy.flash ||= /removed/i
  @denied.flash  ||= /denied/i
  @create.params  ||= {}
  @update.params  ||= {}
  @actions = VALID_ACTIONS
  @formats = VALID_FORMATS
  @denied.actions = []
end

def normalize!(target) # :nodoc:

:nodoc:
def normalize!(target) # :nodoc:
  @denied.actions  = VALID_ACTIONS if @denied.actions == :all
  @actions         = VALID_ACTIONS if @actions        == :all
  @formats         = VALID_FORMATS if @formats        == :all
  @denied.actions  = @denied.actions.map(&:to_sym)
  @actions         = @actions.map(&:to_sym)
  @formats         = @formats.map(&:to_sym)
  ensure_valid_members(@actions,        VALID_ACTIONS, 'actions')
  ensure_valid_members(@denied.actions, VALID_ACTIONS, 'denied.actions')
  ensure_valid_members(@formats,        VALID_FORMATS, 'formats')
  @identifier    ||= :id
  @klass         ||= target.name.gsub(/ControllerTest$/, '').singularize.constantize
  @object        ||= @klass.name.tableize.singularize
  @parent        ||= []
  @parent          = [@parent] unless @parent.is_a? Array
  collection_helper = [@parent, @object.to_s.pluralize, 'url'].flatten.join('_')
  collection_args   = @parent.map {|n| "@#{object}.#{n}"}.join(', ')
  @destroy.redirect ||= "#{collection_helper}(#{collection_args})"
  member_helper = [@parent, @object, 'url'].flatten.join('_')
  member_args   = [@parent.map {|n| "@#{object}.#{n}"}, "@#{object}"].flatten.join(', ')
  @create.redirect  ||= "#{member_helper}(#{member_args})"
  @update.redirect  ||= "#{member_helper}(#{member_args})"
  @denied.redirect  ||= "new_session_url"
end