aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/application/configuration/custom_test.rb
blob: e8c7a37913443a9319080b01d3fafa53e17b41c2 (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
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
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