1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/railties/test/application/configuration/custom_test.rb
Rafael Mendonça França de4891344c Improve custom configuration
1. Hashes can be assigned
2. We don't need a special level anymore

The method chain only works in the top level.

If users need a second level they need to assign a OrderedOptions to the
key:

    config.resque.server = ActiveSupport::OrderedOptions.new
    config.resque.server.url = "http://localhost"
    config.resque.server.port = 3000

[Rafael Mendonça França + Carlos Antonio da Silva]
2014-08-19 13:59:22 -03:00

84 lines
3.2 KiB
Ruby

require 'application/configuration/base_test'
class ApplicationTests::ConfigurationTests::CustomTest < ApplicationTests::ConfigurationTests::BaseTest
test 'configuration top level can be chained' do
add_to_config <<-RUBY
config.resque.inline_jobs = :always
config.resque.timeout = 60
RUBY
require_environment
assert_equal :always, Rails.configuration.resque.inline_jobs
assert_equal 60, Rails.configuration.resque.timeout
assert_nil Rails.configuration.resque.nothing
end
test 'configuration top level accept normal values' do
add_to_config <<-RUBY
config.timeout = 60
config.something_nil = nil
config.something_false = false
config.something_true = true
RUBY
require_environment
assert_equal 60, Rails.configuration.timeout
assert_equal nil, Rails.configuration.something_nil
assert_equal false, Rails.configuration.something_false
assert_equal true, Rails.configuration.something_true
end
test 'configuration top level builds options from hashes' do
add_to_config <<-RUBY
config.resque = { timeout: 60, inline_jobs: :always }
RUBY
require_environment
assert_equal :always, Rails.configuration.resque.inline_jobs
assert_equal 60, Rails.configuration.resque.timeout
assert_nil Rails.configuration.resque.nothing
end
test 'configuration top level builds options from hashes with string keys' do
add_to_config <<-RUBY
config.resque = { 'timeout' => 60, 'inline_jobs' => :always }
RUBY
require_environment
assert_equal :always, Rails.configuration.resque.inline_jobs
assert_equal 60, Rails.configuration.resque.timeout
assert_nil Rails.configuration.resque.nothing
end
test 'configuration top level builds nested options from hashes with symbol keys' do
add_to_config <<-RUBY
config.resque = { timeout: 60, inline_jobs: :always, url: { host: 'localhost', port: 8080 } }
config.resque.url.protocol = 'https'
config.resque.queues = { production: ['low_priority'] }
RUBY
require_environment
assert_equal(:always, Rails.configuration.resque.inline_jobs)
assert_equal(60, Rails.configuration.resque.timeout)
assert_equal({ host: 'localhost', port: 8080, protocol: 'https' }, Rails.configuration.resque.url)
assert_equal('localhost', Rails.configuration.resque.url.host)
assert_equal(8080, Rails.configuration.resque.url.port)
assert_equal('https', Rails.configuration.resque.url.protocol)
assert_equal(['low_priority'], Rails.configuration.resque.queues.production)
assert_nil(Rails.configuration.resque.nothing)
end
test 'configuration top level builds nested options from hashes with string keys' do
add_to_config <<-RUBY
config.resque = { 'timeout' => 60, 'inline_jobs' => :always, 'url' => { 'host' => 'localhost', 'port' => 8080 } }
RUBY
require_environment
assert_equal(:always, Rails.configuration.resque.inline_jobs)
assert_equal(60, Rails.configuration.resque.timeout)
assert_equal({ host: 'localhost', port: 8080 }, Rails.configuration.resque.url)
assert_equal('localhost', Rails.configuration.resque.url.host)
assert_equal(8080, Rails.configuration.resque.url.port)
assert_nil(Rails.configuration.resque.nothing)
end
end