From 52aa5343f49abc2adc4c64d44d7a6bbe4de3373b Mon Sep 17 00:00:00 2001
From: Guillermo Iguaran <guilleiguaran@gmail.com>
Date: Wed, 18 Jul 2012 01:37:03 -0500
Subject: Change AMo::ForbiddenAttributesProtection tests to use a subclass of
 Hash instead of monkey patch permitted? method in regular hashes

---
 .../cases/forbidden_attributes_protection_test.rb  | 26 +++++++++++++++-------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/activemodel/test/cases/forbidden_attributes_protection_test.rb b/activemodel/test/cases/forbidden_attributes_protection_test.rb
index 680f222a30..fab28ced0e 100644
--- a/activemodel/test/cases/forbidden_attributes_protection_test.rb
+++ b/activemodel/test/cases/forbidden_attributes_protection_test.rb
@@ -1,22 +1,32 @@
 require 'cases/helper'
+require 'active_support/core_ext/hash/indifferent_access'
 require 'models/account'
 
+class ProtectedParams < ActiveSupport::HashWithIndifferentAccess
+  attr_accessor :permitted
+  alias :permitted? :permitted
+
+  def initialize(attributes)
+    super(attributes)
+    @permitted = false
+  end
+
+  def permit!
+    @permitted = true
+    self
+  end
+end
+
 class ActiveModelMassUpdateProtectionTest < ActiveSupport::TestCase
   test "forbidden attributes cannot be used for mass updating" do
-    params = { "a" => "b" }
-    class << params
-      define_method(:permitted?) { false }
-    end
+    params = ProtectedParams.new({ "a" => "b" })
     assert_raises(ActiveModel::ForbiddenAttributes) do
       Account.new.sanitize_for_mass_assignment(params)
     end
   end
 
   test "permitted attributes can be used for mass updating" do
-    params = { "a" => "b" }
-    class << params
-      define_method(:permitted?) { true }
-    end
+    params = ProtectedParams.new({ "a" => "b" }).permit!
     assert_nothing_raised do
       assert_equal({ "a" => "b" },
         Account.new.sanitize_for_mass_assignment(params))
-- 
cgit v1.2.3