From b4c33711c52dc78e6ff63469a5caa89f9a67c61a Mon Sep 17 00:00:00 2001 From: Rhett Sutphin Date: Wed, 30 Apr 2008 16:59:22 -0500 Subject: Fixed fixture caching with prefixed or suffixed tables. Signed-off-by: Joshua Peek --- activerecord/test/cases/fixtures_test.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index 182f4f0f0b..2787b9a39d 100755 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -96,6 +96,10 @@ class FixturesTest < ActiveRecord::TestCase second_row = ActiveRecord::Base.connection.select_one("SELECT * FROM prefix_topics_suffix WHERE author_name = 'Mary'") assert_nil(second_row["author_email_address"]) + + # This checks for a caching problem which causes a bug in the fixtures + # class-level configuration helper. + assert_not_nil topics, "Fixture data inserted, but fixture objects not returned from create" ensure # Restore prefix/suffix to its previous values ActiveRecord::Base.table_name_prefix = old_prefix -- cgit v1.2.3 From dd120ede53eaf71dee76894998a81626b7a689fc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 30 Apr 2008 23:14:32 -0500 Subject: Added block-setting of attributes for Base.create like Base.new already has (Adam Meehan) [#39 state:resolved] --- activerecord/test/cases/base_test.rb | 21 +++++++++++++++++++++ activerecord/test/cases/validations_test.rb | 16 ++++++++++++++++ 2 files changed, 37 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index 93719c710a..e07ec50c46 100755 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -251,6 +251,27 @@ class BasicsTest < ActiveRecord::TestCase topic = Topic.create("title" => "New Topic") topicReloaded = Topic.find(topic.id) assert_equal(topic, topicReloaded) + end + + def test_create_through_factory_with_block + topic = Topic.create("title" => "New Topic") do |t| + t.author_name = "David" + end + topicReloaded = Topic.find(topic.id) + assert_equal("New Topic", topic.title) + assert_equal("David", topic.author_name) + end + + def test_create_many_through_factory_with_block + topics = Topic.create([ { "title" => "first" }, { "title" => "second" }]) do |t| + t.author_name = "David" + end + assert_equal 2, topics.size + topic1, topic2 = Topic.find(topics[0].id), Topic.find(topics[1].id) + assert_equal "first", topic1.title + assert_equal "David", topic1.author_name + assert_equal "second", topic2.title + assert_equal "David", topic2.author_name end def test_update diff --git a/activerecord/test/cases/validations_test.rb b/activerecord/test/cases/validations_test.rb index ca36ad3581..e3ca8660ac 100755 --- a/activerecord/test/cases/validations_test.rb +++ b/activerecord/test/cases/validations_test.rb @@ -133,6 +133,22 @@ class ValidationsTest < ActiveRecord::TestCase Reply.create!([ { "title" => "OK" }, { "title" => "Wrong Create" }]) end end + + def test_exception_on_create_bang_with_block + assert_raises(ActiveRecord::RecordInvalid) do + Reply.create!({ "title" => "OK" }) do |r| + r.content = nil + end + end + end + + def test_exception_on_create_bang_many_with_block + assert_raises(ActiveRecord::RecordInvalid) do + Reply.create!([{ "title" => "OK" }, { "title" => "Wrong Create" }]) do |r| + r.content = nil + end + end + end def test_scoped_create_without_attributes Reply.with_scope(:create => {}) do -- cgit v1.2.3 From 6f20efdaf733db26fbf337da73121983785064d5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 30 Apr 2008 23:30:50 -0500 Subject: Fixed AssociationsPreload such that it doesnt require foreign keys to be integers (fcheung) [#33 state:resolved] --- activerecord/test/cases/associations/eager_test.rb | 23 +++++++++++++++++++++- activerecord/test/models/subscriber.rb | 2 ++ activerecord/test/schema/schema.rb | 5 +++++ 3 files changed, 29 insertions(+), 1 deletion(-) (limited to 'activerecord/test') diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 1a3017a22c..546ed80894 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -11,11 +11,14 @@ require 'models/owner' require 'models/pet' require 'models/reference' require 'models/job' +require 'models/subscriber' +require 'models/subscription' +require 'models/book' class EagerAssociationTest < ActiveRecord::TestCase fixtures :posts, :comments, :authors, :categories, :categories_posts, :companies, :accounts, :tags, :taggings, :people, :readers, - :owners, :pets, :author_favorites, :jobs, :references + :owners, :pets, :author_favorites, :jobs, :references, :subscribers, :subscriptions, :books def test_loading_with_one_association posts = Post.find(:all, :include => :comments) @@ -220,6 +223,24 @@ class EagerAssociationTest < ActiveRecord::TestCase assert_no_queries{ assert_equal jobs(:unicyclist, :magician), michael.jobs.sort_by(&:id) } end + def test_eager_load_has_many_with_string_keys + subscriptions = subscriptions(:webster_awdr, :webster_rfr) + subscriber =Subscriber.find(subscribers(:second).id, :include => :subscriptions) + assert_equal subscriptions, subscriber.subscriptions.sort_by(&:id) + end + + def test_eager_load_has_many_through_with_string_keys + books = books(:awdr, :rfr) + subscriber = Subscriber.find(subscribers(:second).id, :include => :books) + assert_equal books, subscriber.books.sort_by(&:id) + end + + def test_eager_load_belongs_to_with_string_keys + subscriber = subscribers(:second) + subscription = Subscription.find(subscriptions(:webster_awdr).id, :include => :subscriber) + assert_equal subscriber, subscription.subscriber + end + def test_eager_association_loading_with_explicit_join posts = Post.find(:all, :include => :comments, :joins => "INNER JOIN authors ON posts.author_id = authors.id AND authors.name = 'Mary'", :limit => 1, :order => 'author_id') assert_equal 1, posts.length diff --git a/activerecord/test/models/subscriber.rb b/activerecord/test/models/subscriber.rb index 51335a8f20..5b78014e6f 100644 --- a/activerecord/test/models/subscriber.rb +++ b/activerecord/test/models/subscriber.rb @@ -1,5 +1,7 @@ class Subscriber < ActiveRecord::Base set_primary_key 'nick' + has_many :subscriptions + has_many :books, :through => :subscriptions end class SpecialSubscriber < Subscriber diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index e22b78749c..818237f076 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -349,6 +349,11 @@ ActiveRecord::Schema.define do end add_index :subscribers, :nick, :unique => true + create_table :subscriptions, :force => true do |t| + t.string :subscriber_id + t.integer :book_id + end + create_table :tasks, :force => true do |t| t.datetime :starting t.datetime :ending -- cgit v1.2.3