From 93d78b831831a1c8e324d4c5404b99e81fe77725 Mon Sep 17 00:00:00 2001
From: Aaron Patterson <aaron.patterson@gmail.com>
Date: Tue, 23 Nov 2010 11:30:14 -0800
Subject: fixing more dup tests

---
 activerecord/lib/active_record/base.rb |  8 +++----
 activerecord/test/cases/base_test.rb   | 43 +++++++++++++++++-----------------
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 6f0e71cc7b..f9de4b7918 100644
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1598,20 +1598,20 @@ MSG
       # to its need.
       def initialize_dup(other)
         super
+        _run_after_initialize_callbacks if respond_to?(:_run_after_initialize_callbacks)
         cloned_attributes = other.clone_attributes(:read_attribute_before_type_cast)
         cloned_attributes.delete(self.class.primary_key)
 
         @attributes         = cloned_attributes
         @changed_attributes = other.changed_attributes.dup
-        @attributes_cache   = {}
-        @persisted          = false
 
-        _run_after_initialize_callbacks if respond_to?(:_run_after_initialize_callbacks)
         clear_aggregation_cache
         clear_association_cache
+        @attributes_cache   = {}
+        @persisted          = false
+
         ensure_proper_type
         populate_with_current_scope_attributes
-        self
       end
 
       # Returns +true+ if the record is read only. Records loaded through joins with piggy-back
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index c8efabed30..e3f4f2bd08 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -669,36 +669,36 @@ class BasicsTest < ActiveRecord::TestCase
     assert_equal true, Topic.find(1).persisted?
   end
 
-  def test_clone
+  def test_dup
     topic = Topic.find(1)
-    cloned_topic = nil
-    assert_nothing_raised { cloned_topic = topic.clone }
-    assert_equal topic.title, cloned_topic.title
-    assert !cloned_topic.persisted?
+    duped_topic = nil
+    assert_nothing_raised { duped_topic = topic.dup }
+    assert_equal topic.title, duped_topic.title
+    assert !duped_topic.persisted?
 
-    # test if the attributes have been cloned
+    # test if the attributes have been duped
     topic.title = "a"
-    cloned_topic.title = "b"
+    duped_topic.title = "b"
     assert_equal "a", topic.title
-    assert_equal "b", cloned_topic.title
+    assert_equal "b", duped_topic.title
 
-    # test if the attribute values have been cloned
+    # test if the attribute values have been duped
     topic.title = {"a" => "b"}
-    cloned_topic = topic.clone
-    cloned_topic.title["a"] = "c"
+    duped_topic = topic.dup
+    duped_topic.title["a"] = "c"
     assert_equal "b", topic.title["a"]
 
-    # test if attributes set as part of after_initialize are cloned correctly
-    assert_equal topic.author_email_address, cloned_topic.author_email_address
+    # test if attributes set as part of after_initialize are duped correctly
+    assert_equal topic.author_email_address, duped_topic.author_email_address
 
     # test if saved clone object differs from original
-    cloned_topic.save
-    assert cloned_topic.persisted?
-    assert_not_equal cloned_topic.id, topic.id
+    duped_topic.save
+    assert duped_topic.persisted?
+    assert_not_equal duped_topic.id, topic.id
 
-    cloned_topic.reload
+    duped_topic.reload
     # FIXME: I think this is poor behavior, and will fix it with #5686
-    assert_equal({'a' => 'c'}.to_s, cloned_topic.title)
+    assert_equal({'a' => 'c'}.to_s, duped_topic.title)
   end
 
   def test_clone_with_aggregate_of_same_name_as_attribute
@@ -721,12 +721,13 @@ class BasicsTest < ActiveRecord::TestCase
     assert_not_equal clone.id, dev.id
   end
 
-  def test_clone_does_not_clone_associations
+  def test_dup_does_not_copy_associations
     author = authors(:david)
     assert_not_equal [], author.posts
+    author.send(:clear_association_cache)
 
-    author_clone = author.clone
-    assert_equal [], author_clone.posts
+    author_dup = author.dup
+    assert_equal [], author_dup.posts
   end
 
   def test_clone_preserves_subtype
-- 
cgit v1.2.3