require File.dirname(__FILE__)+'/../test_helper' class FailableActionOptionsTest < ActiveSupport::TestCase def setup @controller = PostsController.new @create = ResourceController::FailableActionOptions.new end should "have success and fails" do assert ResourceController::ActionOptions, @create.success.class assert ResourceController::ActionOptions, @create.fails.class end %w(before).each do |accessor| should "have a block accessor for #{accessor}" do @create.send(accessor) do "return_something" end assert_equal "return_something", @create.send(accessor).first.call(nil) end end should "delegate flash to success" do @create.flash "Successfully created." assert_equal "Successfully created.", @create.success.flash end should "delegate after to success" do @create.after do "something" end assert_equal "something", @create.success.after.first.call end should "delegate response to success" do @create.response do |wants| wants.html end assert @create.wants[:html] end should "delegate wants to success" do @create.wants.html assert @create.wants[:html] end context "duplication" do setup do @opts = ResourceController::FailableActionOptions.new @opts.wants.js @opts.failure.wants.js @opts.before {} @dup = @opts.dup end should "duplicate success" do assert !@dup.success.equal?(@opts.success) assert @dup.success.wants[:js] end should "duplicate failure" do assert !@dup.failure.equal?(@opts.failure) assert @dup.failure.wants[:js] end should "duplicate before" do assert !@dup.before.equal?(@opts.before) assert @dup.before end end end