Skip to content

Instantly share code, notes, and snippets.

@vipulnsward
Last active December 29, 2015 21:19
Show Gist options
  • Save vipulnsward/76a5404d2d4a36a2ec21 to your computer and use it in GitHub Desktop.
Save vipulnsward/76a5404d2d4a36a2ec21 to your computer and use it in GitHub Desktop.
unless File.exists?('Gemfile')
File.write('Gemfile', <<-GEMFILE)
source 'https://rubygems.org'
gem 'rails', '4.0.1'
gem 'sqlite3'
gem 'pg'
gem 'mysql'
gem 'mysql2'
GEMFILE
system 'bundle'
end
require 'bundler'
Bundler.setup(:default)
require 'active_record'
require 'minitest/autorun'
require 'logger'
#require 'debugger'
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(:adapter => 'postgresql', :database =>'activerecord_unittest')
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :dashboard_tabs, temporary: true do |t|
end
create_table :dashboard_tab_feeds,temporary: true do |t|
t.integer :dashboard_tab_id
t.integer :social_feed_id
end
create_table :social_feeds, temporary: true do |t|
end
end
class DashboardTab < ActiveRecord::Base
has_many :dashboard_tab_feeds, foreign_key: :dashboard_tab_id, dependent: :destroy
has_many :social_feeds, through: :dashboard_tab_feeds
end
class DashboardTabFeed < ActiveRecord::Base
belongs_to :social_feed
belongs_to :dashboard_tab
end
class SocialFeed < ActiveRecord::Base
has_many :dashboard_tab_feeds, foreign_key: :social_feed_id, dependent: :destroy
end
class BugTest < MiniTest::Unit::TestCase
def test_bug
dtf= DashboardTabFeed.create!
dt = DashboardTab.create!
dt.dashboard_tab_feeds << dtf
dt.save
sf= SocialFeed.create!
sf.dashboard_tab_feeds << dtf
sf.save
# call to verify raise
p DashboardTab.first.social_feeds.to_a
# Without Social feed
dt = DashboardTab.create!
dt.dashboard_tab_feeds << DashboardTabFeed.create!
p DashboardTab.last.social_feeds
end
end
=begin
# Running tests:
D, [2013-12-01T13:18:23.715374 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.720697 #29936] DEBUG -- : SQL (0.4ms) INSERT INTO "dashboard_tab_feeds" DEFAULT VALUES RETURNING "id"
D, [2013-12-01T13:18:23.721005 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.723035 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.725404 #29936] DEBUG -- : SQL (0.7ms) INSERT INTO "dashboard_tabs" DEFAULT VALUES RETURNING "id"
D, [2013-12-01T13:18:23.725689 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.731805 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.735272 #29936] DEBUG -- : SQL (2.4ms) UPDATE "dashboard_tab_feeds" SET "dashboard_tab_id" = $1 WHERE "dashboard_tab_feeds"."id" = 1 [["dashboard_tab_id", 1]]
D, [2013-12-01T13:18:23.735603 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.735890 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.736528 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.738368 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.740481 #29936] DEBUG -- : SQL (0.4ms) INSERT INTO "social_feeds" DEFAULT VALUES RETURNING "id"
D, [2013-12-01T13:18:23.740814 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.741883 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.742804 #29936] DEBUG -- : SQL (0.3ms) UPDATE "dashboard_tab_feeds" SET "social_feed_id" = $1 WHERE "dashboard_tab_feeds"."id" = 1 [["social_feed_id", 1]]
D, [2013-12-01T13:18:23.743024 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.743208 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.743724 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.745087 #29936] DEBUG -- : DashboardTab Load (0.3ms) SELECT "dashboard_tabs".* FROM "dashboard_tabs" ORDER BY "dashboard_tabs"."id" ASC LIMIT 1
D, [2013-12-01T13:18:23.751827 #29936] DEBUG -- : SocialFeed Load (0.5ms) SELECT "social_feeds".* FROM "social_feeds" INNER JOIN "dashboard_tab_feeds" ON "social_feeds"."id" = "dashboard_tab_feeds"."social_feed_id" WHERE "dashboard_tab_feeds"."dashboard_tab_id" = $1 [["dashboard_tab_id", 1]]
[#<SocialFeed id: 1>]
D, [2013-12-01T13:18:23.752474 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.752982 #29936] DEBUG -- : SQL (0.1ms) INSERT INTO "dashboard_tabs" DEFAULT VALUES RETURNING "id"
D, [2013-12-01T13:18:23.753240 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.753709 #29936] DEBUG -- : (0.0ms) BEGIN
D, [2013-12-01T13:18:23.754212 #29936] DEBUG -- : SQL (0.2ms) INSERT INTO "dashboard_tab_feeds" DEFAULT VALUES RETURNING "id"
D, [2013-12-01T13:18:23.754452 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.754644 #29936] DEBUG -- : (0.1ms) BEGIN
D, [2013-12-01T13:18:23.755258 #29936] DEBUG -- : SQL (0.2ms) UPDATE "dashboard_tab_feeds" SET "dashboard_tab_id" = $1 WHERE "dashboard_tab_feeds"."id" = 2 [["dashboard_tab_id", 2]]
D, [2013-12-01T13:18:23.755437 #29936] DEBUG -- : (0.1ms) COMMIT
D, [2013-12-01T13:18:23.755885 #29936] DEBUG -- : DashboardTab Load (0.2ms) SELECT "dashboard_tabs".* FROM "dashboard_tabs" ORDER BY "dashboard_tabs"."id" DESC LIMIT 1
D, [2013-12-01T13:18:23.756741 #29936] DEBUG -- : SocialFeed Load (0.2ms) SELECT "social_feeds".* FROM "social_feeds" INNER JOIN "dashboard_tab_feeds" ON "social_feeds"."id" = "dashboard_tab_feeds"."social_feed_id" WHERE "dashboard_tab_feeds"."dashboard_tab_id" = $1 [["dashboard_tab_id", 2]]
#<ActiveRecord::Associations::CollectionProxy []>
.
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment