blob: f539156466db5029dfe854eb58c420069160b72b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# frozen_string_literal: true
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
|