From f81c6bc0404ba2a03eed0ec6c08bbac45661305f Mon Sep 17 00:00:00 2001
From: snusnu <gamsnjaga@gmail.com>
Date: Sun, 21 Feb 2010 03:05:28 +0100
Subject: AMo #key is now #to_key and CI is probably happy

Obviously #key is a too common name to be included
in the AMo interface, #to_key fits better and also
relates nicely to #to_param. Thx wycats, koz and
josevalim for the suggestion.

AR's #to_key implementation now takes customized
primary keys into account and there's a testcase
for that too.

The #to_param AMo lint makes no assumptions on how
the method behaves in the presence of composite
primary keys. It leaves the decision wether to
provide a default, or to raise and thus signal to
the user that implementing this method will need
his special attention, up to the implementers. All
AMo cares about is that #to_param is implemented
and returns nil in case of a new_record?.

The default CompliantObject used in lint_test
provides a naive default implementation that just
joins all key attributes with '-'.

The #to_key default implementation in lint_test's
CompliantObject now returns [id] instead of [1].
This was previously causing the (wrong) tests I
added for AR's #to_key implementation to pass. The
#to_key tests added with this patch should be
better.

The CI failure was caused by my lack of knowledge
about the test:isolated task. The tests for the
record_identifier code in action_controller are
using fake non AR models and I forgot to stub the
#to_key method over there. This issue didn't come
up when running the test task, only test:isolated
revealed it. This patch fixes that.

All tests pass isolated or not, well, apart from
one previously unpended test in action_controller
that is unrelated to my patch.
---
 actionpack/test/lib/controller/fake_models.rb | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

(limited to 'actionpack/test/lib')

diff --git a/actionpack/test/lib/controller/fake_models.rb b/actionpack/test/lib/controller/fake_models.rb
index e4aed14dc0..4475d40f63 100644
--- a/actionpack/test/lib/controller/fake_models.rb
+++ b/actionpack/test/lib/controller/fake_models.rb
@@ -6,7 +6,7 @@ class Customer < Struct.new(:name, :id)
 
   undef_method :to_json
 
-  def key
+  def to_key
     id ? [id] : nil
   end
 
@@ -47,7 +47,7 @@ module Quiz
     extend ActiveModel::Naming
     include ActiveModel::Conversion
 
-    def key
+    def to_key
       id ? [id] : nil
     end
 
@@ -67,7 +67,7 @@ class Post < Struct.new(:title, :author_name, :body, :secret, :written_on, :cost
 
   alias_method :secret?, :secret
 
-  def key
+  def to_key
     id ? [id] : nil
   end
 
@@ -96,7 +96,7 @@ class Comment
   attr_reader :id
   attr_reader :post_id
   def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end
-  def key; id ? [id] : nil end
+  def to_key; id ? [id] : nil end
   def save; @id = 1; @post_id = 1 end
   def new_record?; @id.nil? end
   def to_param; @id; end
@@ -116,7 +116,7 @@ class Tag
   attr_reader :id
   attr_reader :post_id
   def initialize(id = nil, post_id = nil); @id, @post_id = id, post_id end
-  def key; id ? [id] : nil end
+  def to_key; id ? [id] : nil end
   def save; @id = 1; @post_id = 1 end
   def new_record?; @id.nil? end
   def to_param; @id; end
@@ -136,7 +136,7 @@ class CommentRelevance
   attr_reader :id
   attr_reader :comment_id
   def initialize(id = nil, comment_id = nil); @id, @comment_id = id, comment_id end
-  def key; id ? [id] : nil end
+  def to_key; id ? [id] : nil end
   def save; @id = 1; @comment_id = 1 end
   def new_record?; @id.nil? end
   def to_param; @id; end
@@ -152,7 +152,7 @@ class TagRelevance
   attr_reader :id
   attr_reader :tag_id
   def initialize(id = nil, tag_id = nil); @id, @tag_id = id, tag_id end
-  def key; id ? [id] : nil end
+  def to_key; id ? [id] : nil end
   def save; @id = 1; @tag_id = 1 end
   def new_record?; @id.nil? end
   def to_param; @id; end
-- 
cgit v1.2.3