Skip to content

Commit

Permalink
Merge pull request #4114 from alexeymuranov/my_fix_for_prefix_suffix_…
Browse files Browse the repository at this point in the history
…fixtures_test

Fix a fixtures test case with table prefix/suffix
  • Loading branch information
jonleighton committed Dec 22, 2011
2 parents fa5adfb + adb917a commit f8e484d
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 23 deletions.
59 changes: 36 additions & 23 deletions activerecord/test/cases/fixtures_test.rb
@@ -1,31 +1,32 @@
require "cases/helper"
require 'models/post'
require 'cases/helper'
require 'models/admin'
require 'models/admin/account'
require 'models/admin/user'
require 'models/binary'
require 'models/topic'
require 'models/book'
require 'models/category'
require 'models/company'
require 'models/computer'
require 'models/course'
require 'models/developer'
require 'models/company'
require 'models/task'
require 'models/reply'
require 'models/joke'
require 'models/course'
require 'models/category'
require 'models/matey'
require 'models/parrot'
require 'models/pirate'
require 'models/treasure'
require 'models/traffic_light'
require 'models/matey'
require 'models/post'
require 'models/reply'
require 'models/ship'
require 'models/book'
require 'models/admin'
require 'models/admin/account'
require 'models/admin/user'
require 'models/task'
require 'models/topic'
require 'models/traffic_light'
require 'models/treasure'
require 'tempfile'

class FixturesTest < ActiveRecord::TestCase
self.use_instantiated_fixtures = true
self.use_transactional_fixtures = false

# other_topics fixture should not be included here
fixtures :topics, :developers, :accounts, :tasks, :categories, :funny_jokes, :binaries, :traffic_lights

FIXTURES = %w( accounts binaries companies customers
Expand Down Expand Up @@ -93,7 +94,7 @@ def test_inserts_with_pre_and_suffix
# Reset cache to make finds on the new table work
ActiveRecord::Fixtures.reset_cache

ActiveRecord::Base.connection.create_table :prefix_topics_suffix do |t|
ActiveRecord::Base.connection.create_table :prefix_other_topics_suffix do |t|
t.column :title, :string
t.column :author_name, :string
t.column :author_email_address, :string
Expand All @@ -115,23 +116,35 @@ def test_inserts_with_pre_and_suffix
ActiveRecord::Base.table_name_prefix = 'prefix_'
ActiveRecord::Base.table_name_suffix = '_suffix'

topics = create_fixtures("topics")

first_row = ActiveRecord::Base.connection.select_one("SELECT * FROM prefix_topics_suffix WHERE author_name = 'David'")
assert_equal("The First Topic", first_row["title"])
other_topic_klass = Class.new(ActiveRecord::Base) do
def self.name
"OtherTopic"
end
end

second_row = ActiveRecord::Base.connection.select_one("SELECT * FROM prefix_topics_suffix WHERE author_name = 'Mary'")
assert_nil(second_row["author_email_address"])
topics = create_fixtures("other_topics")

# 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"

first_row = ActiveRecord::Base.connection.select_one("SELECT * FROM prefix_other_topics_suffix WHERE author_name = 'David'")
assert_equal("The First Topic", first_row["title"])

second_row = ActiveRecord::Base.connection.select_one("SELECT * FROM prefix_other_topics_suffix WHERE author_name = 'Mary'")
assert_nil(second_row["author_email_address"])

assert_equal "prefix_other_topics_suffix", ActiveRecord::Fixtures::all_loaded_fixtures["other_topics"].table_name
# This assertion should be the last in the list, because calling
# other_topic_klass.table_name sets a class-level instance variable
assert_equal "prefix_other_topics_suffix", other_topic_klass.table_name

ensure
# Restore prefix/suffix to its previous values
ActiveRecord::Base.table_name_prefix = old_prefix
ActiveRecord::Base.table_name_suffix = old_suffix

ActiveRecord::Base.connection.drop_table :prefix_topics_suffix rescue nil
ActiveRecord::Base.connection.drop_table :prefix_other_topics_suffix rescue nil
end
end

Expand Down
42 changes: 42 additions & 0 deletions activerecord/test/fixtures/other_topics.yml
@@ -0,0 +1,42 @@
first:
id: 1
title: The First Topic
author_name: David
author_email_address: david@loudthinking.com
written_on: 2003-07-16t15:28:11.2233+01:00
last_read: 2004-04-15
bonus_time: 2005-01-30t15:28:00.00+01:00
content: Have a nice day
approved: false
replies_count: 1

second:
id: 2
title: The Second Topic of the day
author_name: Mary
written_on: 2004-07-15t15:28:00.0099+01:00
content: Have a nice day
approved: true
replies_count: 0
parent_id: 1
type: Reply

third:
id: 3
title: The Third Topic of the day
author_name: Carl
written_on: 2005-07-15t15:28:00.0099+01:00
content: I'm a troll
approved: true
replies_count: 1

fourth:
id: 4
title: The Fourth Topic of the day
author_name: Carl
written_on: 2006-07-15t15:28:00.0099+01:00
content: Why not?
approved: true
type: Reply
parent_id: 3

0 comments on commit f8e484d

Please sign in to comment.