aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-02-21 08:47:37 +0100
committerJosé Valim <jose.valim@gmail.com>2010-02-21 09:08:59 +0100
commit9dd67fce25d3993a0ee494506ba246a45d395e3f (patch)
tree4185a25a3be50de5fcd29d387782145d49cd1dcc /activemodel/test
parentf81c6bc0404ba2a03eed0ec6c08bbac45661305f (diff)
downloadrails-9dd67fce25d3993a0ee494506ba246a45d395e3f.tar.gz
rails-9dd67fce25d3993a0ee494506ba246a45d395e3f.tar.bz2
rails-9dd67fce25d3993a0ee494506ba246a45d395e3f.zip
Add to_key and to_param methods to ActiveModel::Conversion.
Diffstat (limited to 'activemodel/test')
-rw-r--r--activemodel/test/cases/conversion_test.rb25
-rw-r--r--activemodel/test/cases/lint_test.rb17
-rw-r--r--activemodel/test/models/contact.rb8
3 files changed, 34 insertions, 16 deletions
diff --git a/activemodel/test/cases/conversion_test.rb b/activemodel/test/cases/conversion_test.rb
new file mode 100644
index 0000000000..373424df2f
--- /dev/null
+++ b/activemodel/test/cases/conversion_test.rb
@@ -0,0 +1,25 @@
+require 'cases/helper'
+require 'models/contact'
+
+class ConversionTest < ActiveModel::TestCase
+ test "to_model default implementation returns self" do
+ contact = Contact.new
+ assert_equal contact, contact.to_model
+ end
+
+ test "to_key default implementation returns nil for new records" do
+ assert_nil Contact.new.to_key
+ end
+
+ test "to_key default implementation returns the id in an array for persisted records" do
+ assert_equal [1], Contact.new(:new_record => false, :id => 1).to_key
+ end
+
+ test "to_param default implementation returns nil for new records" do
+ assert_nil Contact.new.to_param
+ end
+
+ test "to_param default implementation returns a string of ids for persisted records" do
+ assert_equal "1", Contact.new(:new_record => false, :id => 1).to_param
+ end
+end \ No newline at end of file
diff --git a/activemodel/test/cases/lint_test.rb b/activemodel/test/cases/lint_test.rb
index 99f8eff5d8..e4c069e1ab 100644
--- a/activemodel/test/cases/lint_test.rb
+++ b/activemodel/test/cases/lint_test.rb
@@ -1,24 +1,11 @@
-require "cases/helper"
+require 'cases/helper'
class LintTest < ActiveModel::TestCase
include ActiveModel::Lint::Tests
class CompliantModel
extend ActiveModel::Naming
-
- def to_model
- self
- end
-
- def to_key
- new_record? ? nil : [id]
- end
-
- def to_param
- return nil if to_key.nil?
- # some default for CPKs, real implementations will differ
- to_key.length > 1 ? to_key.join('-') : to_key.first.to_s
- end
+ include ActiveModel::Conversion
def valid?() true end
def new_record?() true end
diff --git a/activemodel/test/models/contact.rb b/activemodel/test/models/contact.rb
index f9fb0af027..dbdb8539b7 100644
--- a/activemodel/test/models/contact.rb
+++ b/activemodel/test/models/contact.rb
@@ -1,7 +1,13 @@
class Contact
- attr_accessor :name, :age, :created_at, :awesome, :preferences
+ include ActiveModel::Conversion
+
+ attr_accessor :id, :name, :age, :created_at, :awesome, :preferences, :new_record
def initialize(options = {})
options.each { |name, value| send("#{name}=", value) }
end
+
+ def new_record?
+ defined?(@new_record) ? @new_record : true
+ end
end