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:
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:
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:
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