mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
53 lines
1.1 KiB
Ruby
53 lines
1.1 KiB
Ruby
|
require "cases/helper"
|
||
|
|
||
|
module SchemaLoadCounter
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
module ClassMethods
|
||
|
attr_accessor :load_schema_calls
|
||
|
|
||
|
def load_schema!
|
||
|
self.load_schema_calls ||= 0
|
||
|
self.load_schema_calls +=1
|
||
|
super
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class SchemaLoadingTest < ActiveRecord::TestCase
|
||
|
def test_basic_model_is_loaded_once
|
||
|
klass = define_model
|
||
|
klass.new
|
||
|
assert_equal 1, klass.load_schema_calls
|
||
|
end
|
||
|
|
||
|
def test_model_with_custom_lock_is_loaded_once
|
||
|
klass = define_model do |c|
|
||
|
c.table_name = :lock_without_defaults_cust
|
||
|
c.locking_column = :custom_lock_version
|
||
|
end
|
||
|
klass.new
|
||
|
assert_equal 1, klass.load_schema_calls
|
||
|
end
|
||
|
|
||
|
def test_model_with_changed_custom_lock_is_loaded_twice
|
||
|
klass = define_model do |c|
|
||
|
c.table_name = :lock_without_defaults_cust
|
||
|
end
|
||
|
klass.new
|
||
|
klass.locking_column = :custom_lock_version
|
||
|
klass.new
|
||
|
assert_equal 2, klass.load_schema_calls
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def define_model
|
||
|
Class.new(ActiveRecord::Base) do
|
||
|
include SchemaLoadCounter
|
||
|
self.table_name = :lock_without_defaults
|
||
|
yield self if block_given?
|
||
|
end
|
||
|
end
|
||
|
end
|