Advertisement
PikachuEXE

Test Script for rails/rails#15176

May 19th, 2014
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.41 KB | None | 0 0
  1. unless File.exist?('Gemfile')
  2.   File.write('Gemfile', <<-GEMFILE)
  3. source 'https://rubygems.org'
  4. gem 'rails', github: 'rails/rails'
  5. gem 'arel', github: 'rails/arel'
  6. gem 'sqlite3'
  7. GEMFILE
  8.  
  9.   system 'bundle'
  10. end
  11.  
  12. require 'bundler'
  13. Bundler.setup(:default)
  14.  
  15. require 'active_record'
  16. require 'minitest/autorun'
  17. require 'logger'
  18.  
  19. # This connection will do for database-independent bug reports.
  20. ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
  21. ActiveRecord::Base.logger = Logger.new(STDOUT)
  22.  
  23. ActiveRecord::Schema.define do
  24.   create_table :posts do |t|
  25.   end
  26.  
  27.   create_table :comments do |t|
  28.     t.integer :post_id
  29.   end
  30. end
  31.  
  32. class Post < ActiveRecord::Base
  33.   has_many :comments
  34. end
  35.  
  36. class Comment < ActiveRecord::Base
  37.   belongs_to :post
  38. end
  39.  
  40. class BugTest < Minitest::Test
  41.   def test_null_relation_in_direct_and_association_subquery
  42.     post = Post.create!
  43.     post.comments << Comment.create!
  44.  
  45.     assert_equal 1, Post.count
  46.  
  47.     # Direct
  48.     assert_equal 0, Post.none.count
  49.     # assert_equal 0, Post.where(id: Post.none).count
  50.  
  51.     # Select parent with children condition
  52.     assert_equal 0, Post.includes(:comments).references(:comments).where(comments: {id: Comment.none}).count
  53.  
  54.     # Select children with children condition
  55.     assert_equal 0, post.comments.none.count
  56.     assert_equal 0, post.comments.where(comments: {id: Comment.none}).count
  57.   end
  58. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement