/
database_configurations_test.rb
195 lines (160 loc) · 6.25 KB
/
database_configurations_test.rb
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# frozen_string_literal: true
require "cases/helper"
class DatabaseConfigurationsTest < ActiveRecord::TestCase
unless in_memory_db?
def test_empty_returns_true_when_db_configs_are_empty
old_config = ActiveRecord::Base.configurations
config = {}
ActiveRecord::Base.configurations = config
assert_predicate ActiveRecord::Base.configurations, :empty?
assert_predicate ActiveRecord::Base.configurations, :blank?
ensure
ActiveRecord::Base.configurations = old_config
ActiveRecord::Base.establish_connection :arunit
end
end
def test_configs_for_getter_with_env_name
configs = ActiveRecord::Base.configurations.configs_for(env_name: "arunit")
assert_equal 1, configs.size
assert_equal ["arunit"], configs.map(&:env_name)
end
def test_configs_for_getter_with_name
previous_env, ENV["RAILS_ENV"] = ENV["RAILS_ENV"], "arunit2"
config = ActiveRecord::Base.configurations.configs_for(name: "primary")
assert_equal "arunit2", config.env_name
assert_equal "primary", config.name
ensure
ENV["RAILS_ENV"] = previous_env
end
def test_configs_for_getter_with_env_and_name
config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
assert_equal "arunit", config.env_name
assert_equal "primary", config.name
end
def test_default_hash_returns_config_hash_from_default_env
original_rails_env = ENV["RAILS_ENV"]
ENV["RAILS_ENV"] = "arunit"
assert_deprecated do
assert_equal ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary").configuration_hash, ActiveRecord::Base.configurations.default_hash
end
ensure
ENV["RAILS_ENV"] = original_rails_env
end
def test_find_db_config_returns_first_config_for_env
config = ActiveRecord::DatabaseConfigurations.new({
"test" => {
"config_1" => {
"database" => "db"
},
"config_2" => {
"database" => "db"
},
"config_3" => {
"database" => "db"
},
}
})
assert_equal "config_1", config.find_db_config("test").name
end
def test_find_db_config_returns_a_db_config_object_for_the_given_env
config = ActiveRecord::Base.configurations.find_db_config("arunit2")
assert_equal "arunit2", config.env_name
assert_equal "primary", config.name
end
def test_find_db_config_prioritize_db_config_object_for_the_current_env
config = ActiveRecord::DatabaseConfigurations.new({
"primary" => {
"adapter" => "randomadapter"
},
ActiveRecord::ConnectionHandling::DEFAULT_ENV.call => {
"primary" => {
"adapter" => "sqlite3",
"database" => ":memory:"
}
}
}).find_db_config("primary")
assert_equal "primary", config.name
assert_equal ActiveRecord::ConnectionHandling::DEFAULT_ENV.call, config.env_name
assert_equal ":memory:", config.database
end
def test_to_h_turns_db_config_object_back_into_a_hash_and_is_deprecated
configs = ActiveRecord::Base.configurations
assert_equal "ActiveRecord::DatabaseConfigurations", configs.class.name
assert_deprecated do
assert_equal "Hash", configs.to_h.class.name
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements"], ActiveRecord::Base.configurations.to_h.keys.sort
end
end
end
class LegacyDatabaseConfigurationsTest < ActiveRecord::TestCase
unless in_memory_db?
def test_setting_configurations_hash
old_config = ActiveRecord::Base.configurations
config = { "adapter" => "sqlite3" }
assert_deprecated do
ActiveRecord::Base.configurations["readonly"] = config
end
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements", "readonly"], ActiveRecord::Base.configurations.configs_for.map(&:env_name).sort
ensure
ActiveRecord::Base.configurations = old_config
ActiveRecord::Base.establish_connection :arunit
end
end
def test_can_turn_configurations_into_a_hash_and_is_deprecated
assert_deprecated do
assert ActiveRecord::Base.configurations.to_h.is_a?(Hash), "expected to be a hash but was not."
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements"].sort, ActiveRecord::Base.configurations.to_h.keys.sort
end
end
def test_each_is_deprecated
assert_deprecated do
all_configs = ActiveRecord::Base.configurations.values
ActiveRecord::Base.configurations.each do |env_name, config|
assert_includes ["arunit", "arunit2", "arunit_without_prepared_statements"], env_name
assert_includes all_configs, config
end
end
end
def test_first_is_deprecated
first_config = ActiveRecord::Base.configurations.configurations.map(&:configuration_hash).first
assert_deprecated do
env_name, config = ActiveRecord::Base.configurations.first
assert_equal "arunit", env_name
assert_equal first_config, config
end
end
def test_fetch_is_deprecated
assert_deprecated do
db_config = ActiveRecord::Base.configurations.fetch("arunit").first
assert_equal "arunit", db_config.env_name
assert_equal "primary", db_config.name
end
end
def test_values_are_deprecated
config_hashes = ActiveRecord::Base.configurations.configurations.map(&:configuration_hash)
assert_deprecated do
assert_equal config_hashes, ActiveRecord::Base.configurations.values
end
end
def test_deprecated_config_method
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
assert_equal db_config.configuration_hash.stringify_keys, assert_deprecated { db_config.config }
end
def test_unsupported_method_raises
assert_raises NotImplementedError do
ActiveRecord::Base.configurations.select { |a| a == "foo" }
end
end
def test_spec_name_in_configs_for_is_deprecated
assert_deprecated do
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", spec_name: "primary")
assert_equal "primary", db_config.name
end
end
def test_spec_name_getter_is_deprecated
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
assert_deprecated do
assert_equal "primary", db_config.spec_name
end
end
end