aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-09-09 12:00:01 +0200
committerYves Senn <yves.senn@gmail.com>2014-09-09 12:00:01 +0200
commitec6eee5db0994f92ac2c3c6d2a922c6edd35b2b1 (patch)
treecb49e34c6e7522e4661582eb1050191a28a6bd7d
parentd2069d60aeb28f74a2be68f0d4a7259a2fc1bfa7 (diff)
downloadrails-ec6eee5db0994f92ac2c3c6d2a922c6edd35b2b1.tar.gz
rails-ec6eee5db0994f92ac2c3c6d2a922c6edd35b2b1.tar.bz2
rails-ec6eee5db0994f92ac2c3c6d2a922c6edd35b2b1.zip
add test-cases for primary-key-less-views. Closes #16555.
-rw-r--r--activerecord/test/cases/view_test.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/activerecord/test/cases/view_test.rb b/activerecord/test/cases/view_test.rb
index b79dd03676..2f23d12de5 100644
--- a/activerecord/test/cases/view_test.rb
+++ b/activerecord/test/cases/view_test.rb
@@ -37,5 +37,48 @@ class ViewWithPrimaryKeyTest < ActiveRecord::TestCase
["name", :string],
["status", :integer]], Ebook.columns.map { |c| [c.name, c.type] })
end
+
+ def test_attributes
+ assert_equal({"id" => 2, "name" => "Ruby for Rails", "status" => 0},
+ Ebook.first.attributes)
+ end
+end
+
+class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
+ fixtures :books
+
+ class Paperback < ActiveRecord::Base; end
+
+ setup do
+ @connection = ActiveRecord::Base.connection
+ @connection.execute <<-SQL
+ CREATE VIEW paperbacks
+ AS SELECT name, status FROM books WHERE format = 'paperback'
+ SQL
+ end
+
+ teardown do
+ @connection.execute "DROP VIEW IF EXISTS paperbacks"
+ end
+
+ def test_reading
+ books = Paperback.all
+ assert_equal ["Agile Web Development with Rails"], books.map(&:name)
+ end
+
+ def test_table_exists
+ view_name = Paperback.table_name
+ assert @connection.table_exists?(view_name), "'#{view_name}' table should exist"
+ end
+
+ def test_column_definitions
+ assert_equal([["name", :string],
+ ["status", :integer]], Paperback.columns.map { |c| [c.name, c.type] })
+ end
+
+ def test_attributes
+ assert_equal({"name" => "Agile Web Development with Rails", "status" => 0},
+ Paperback.first.attributes)
+ end
end
end