|
| 1 | +require 'spec_helper' |
| 2 | + |
| 3 | +module Config::Sources |
| 4 | + describe EnvSource do |
| 5 | + context 'configuration options' do |
| 6 | + before :each do |
| 7 | + Config.reset |
| 8 | + Config.env_prefix = nil |
| 9 | + Config.env_separator = '.' |
| 10 | + Config.env_converter = :downcase |
| 11 | + Config.env_parse_values = true |
| 12 | + end |
| 13 | + |
| 14 | + context 'default configuration' do |
| 15 | + it 'should use global prefix configuration by default' do |
| 16 | + Config.env_prefix = 'MY_CONFIG' |
| 17 | + |
| 18 | + source = EnvSource.new({ 'MY_CONFIG.ACTION_MAILER' => 'enabled' }) |
| 19 | + results = source.load |
| 20 | + expect(results['action_mailer']).to eq('enabled') |
| 21 | + end |
| 22 | + |
| 23 | + it 'should use global separator configuration by default' do |
| 24 | + Config.env_separator = '__' |
| 25 | + |
| 26 | + source = EnvSource.new({ 'Settings__ACTION_MAILER__ENABLED' => 'yes' }) |
| 27 | + results = source.load |
| 28 | + expect(results['action_mailer']['enabled']).to eq('yes') |
| 29 | + end |
| 30 | + |
| 31 | + it 'should use global converter configuration by default' do |
| 32 | + Config.env_converter = nil |
| 33 | + |
| 34 | + source = EnvSource.new({ 'Settings.ActionMailer.Enabled' => 'yes' }) |
| 35 | + results = source.load |
| 36 | + expect(results['ActionMailer']['Enabled']).to eq('yes') |
| 37 | + end |
| 38 | + |
| 39 | + it 'should use global parse_values configuration by default' do |
| 40 | + Config.env_parse_values = false |
| 41 | + |
| 42 | + source = EnvSource.new({ 'Settings.ACTION_MAILER.ENABLED' => 'true' }) |
| 43 | + results = source.load |
| 44 | + expect(results['action_mailer']['enabled']).to eq('true') |
| 45 | + end |
| 46 | + end |
| 47 | + |
| 48 | + context 'configuration overrides' do |
| 49 | + it 'should allow overriding prefix configuration' do |
| 50 | + source = EnvSource.new({ 'MY_CONFIG.ACTION_MAILER' => 'enabled' }, |
| 51 | + prefix: 'MY_CONFIG') |
| 52 | + results = source.load |
| 53 | + expect(results['action_mailer']).to eq('enabled') |
| 54 | + end |
| 55 | + |
| 56 | + it 'should allow overriding separator configuration' do |
| 57 | + source = EnvSource.new({ 'Settings__ACTION_MAILER__ENABLED' => 'yes' }, |
| 58 | + separator: '__') |
| 59 | + results = source.load |
| 60 | + expect(results['action_mailer']['enabled']).to eq('yes') |
| 61 | + end |
| 62 | + |
| 63 | + it 'should allow overriding converter configuration' do |
| 64 | + source = EnvSource.new({ 'Settings.ActionMailer.Enabled' => 'yes' }, |
| 65 | + converter: nil) |
| 66 | + results = source.load |
| 67 | + expect(results['ActionMailer']['Enabled']).to eq('yes') |
| 68 | + end |
| 69 | + |
| 70 | + it 'should allow overriding parse_values configuration' do |
| 71 | + source = EnvSource.new({ 'Settings.ACTION_MAILER.ENABLED' => 'true' }, |
| 72 | + parse_values: false) |
| 73 | + results = source.load |
| 74 | + expect(results['action_mailer']['enabled']).to eq('true') |
| 75 | + end |
| 76 | + end |
| 77 | + end |
| 78 | + end |
| 79 | +end |
0 commit comments