Skip to content

Instantly share code, notes, and snippets.

@jvrsgsty
Created June 6, 2017 00:03
Show Gist options
  • Save jvrsgsty/77ffbaae972a7b1b56cab7c80eba09da to your computer and use it in GitHub Desktop.
Save jvrsgsty/77ffbaae972a7b1b56cab7c80eba09da to your computer and use it in GitHub Desktop.
Attempted test case of Active Record Query bug
begin
require "bundler/inline"
rescue LoadError => e
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler"
raise e
end
gemfile(true) do
source "https://rubygems.org"
gem "rails",'5.0.0.1'
gem "arel"
gem "sqlite3"
end
require "active_record"
require "minitest/autorun"
require "logger"
# This connection will do for database-independent bug reports.
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :users, force: true do |t|
t.string "name"
t.string "phone"
t.string "email"
t.timestamps
end
end
class User < ActiveRecord::Base
before_validation { self.email = email.try(:downcase) }
validates :name, presence: { message: "cannot be empty" }, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: { message: "cannot be empty" },
format: { with: VALID_EMAIL_REGEX, message: "should be valid email format" }
validates :phone, presence: { message: "cannot be empty" }, length: { maximum: 50 }
end
class BugTest < Minitest::Test
def test_stuff
user1 = User.create!(name:"Test1", email: "test45@test.com", phone: "1234567890")
(1..100).each {|n| User.create!(name:"Test#{n}", email: "test#{n}@test.com", phone: "1234567890")}
user2 = User.create!(name:"Test2", email: "test45@test.com", phone: "1234567890")
sleep 1
user1.name = "Test 1"
user1.save
email = "test45@test.com"
query = User.where("email = '#{email}'")
puts "Blank?: " + query.blank?.to_s
puts "Length: " + query.length.to_s
puts "Last.id: " + query.last.id.to_s
assert_equal query.last, User.where("email = '#{email}'").last
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment