|
151 | 151 | expect(Settings.size).to eq(2)
|
152 | 152 | end
|
153 | 153 |
|
| 154 | + describe "load_and_set_settings in the Rails context" do |
| 155 | + if defined?(Rails) |
| 156 | + let(:config_name) { Rails.root.join("config", "initializers", "config.rb") } |
| 157 | + let(:default_settings_file_name) { Rails.root.join("config", "settings.yml") } |
| 158 | + let(:custom_settings_file_name) { Rails.root.join("config", "settings_custom.yml") } |
| 159 | + let(:spring_file_name_for_rails_6_1) { Rails.root.join("bin", "spring") } |
| 160 | + |
| 161 | + before do |
| 162 | + File.write(default_settings_file_name, "default: default_value") |
| 163 | + File.write(custom_settings_file_name, "custom: custom_value") |
| 164 | + # workaround for Rails 6.1 |
| 165 | + File.write(spring_file_name_for_rails_6_1, "") if Rails.version == "6.1.7.6" |
| 166 | + end |
| 167 | + |
| 168 | + after do |
| 169 | + File.delete(config_name) if File.exist?(config_name) |
| 170 | + File.delete(default_settings_file_name) if File.exist?(default_settings_file_name) |
| 171 | + File.delete(custom_settings_file_name) if File.exist?(custom_settings_file_name) |
| 172 | + File.delete(spring_file_name_for_rails_6_1) if File.exist?(spring_file_name_for_rails_6_1) |
| 173 | + end |
| 174 | + |
| 175 | + it "should read value only from default settings without config.rb" do |
| 176 | + values = `#{Rails.root.join("bin", "rails")} runner 'print "\#{Settings.default}|\#{Settings.custom}"'` |
| 177 | + expect(values).to eq("default_value|") |
| 178 | + end |
| 179 | + |
| 180 | + it "should read value only from default settings without use of load_and_set_settings" do |
| 181 | + File.write(config_name, "Config.setup { |config| }") |
| 182 | + values = `#{Rails.root.join("bin", "rails")} runner 'print "\#{Settings.default}|\#{Settings.custom}"'` |
| 183 | + expect(values).to eq("default_value|") |
| 184 | + end |
| 185 | + |
| 186 | + it "should read value only from custom settings with use of load_and_set_settings" do |
| 187 | + File.write(config_name, "Config.setup { |config| config.load_and_set_settings(['#{custom_settings_file_name}']) }") |
| 188 | + values = `#{Rails.root.join("bin", "rails")} runner 'print "\#{Settings.default}|\#{Settings.custom}"'` |
| 189 | + expect(values).to eq("|custom_value") |
| 190 | + end |
| 191 | + end |
| 192 | + end |
| 193 | + |
154 | 194 |
|
155 | 195 |
|
156 | 196 | context "Nested Settings" do
|
|
0 commit comments