configurations 2.0.0.pre → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -7
- data/.travis.yml +4 -2
- data/License.txt +1 -1
- data/README.md +23 -7
- data/Rakefile +1 -1
- data/configurations.gemspec +7 -3
- data/lib/configurations.rb +8 -4
- data/lib/configurations/arbitrary.rb +124 -0
- data/lib/configurations/blank_object.rb +60 -0
- data/lib/configurations/configurable.rb +153 -42
- data/lib/configurations/configuration.rb +96 -213
- data/lib/configurations/strict.rb +170 -0
- data/test/configurations/arbitrary/test.rb +23 -0
- data/test/configurations/arbitrary/test_defaults.rb +5 -0
- data/test/configurations/arbitrary/test_hash_methods.rb +11 -0
- data/test/configurations/arbitrary/test_methods.rb +5 -0
- data/test/configurations/arbitrary/test_not_configured.rb +5 -0
- data/test/configurations/arbitrary/test_not_configured_default.rb +5 -0
- data/test/configurations/shared/defaults.rb +43 -0
- data/test/configurations/shared/hash_methods.rb +40 -0
- data/test/configurations/shared/kernel_methods.rb +9 -0
- data/test/configurations/shared/methods.rb +31 -0
- data/test/configurations/shared/not_configured_callbacks.rb +42 -0
- data/test/configurations/shared/not_configured_default_callback.rb +42 -0
- data/test/configurations/shared/properties.rb +46 -0
- data/test/configurations/shared/properties_outside_block.rb +40 -0
- data/test/configurations/shared/strict_hash_methods.rb +43 -0
- data/test/configurations/strict/test.rb +20 -0
- data/test/configurations/strict/test_defaults.rb +6 -0
- data/test/configurations/strict/test_hash_methods.rb +11 -0
- data/test/configurations/strict/test_methods.rb +6 -0
- data/test/configurations/strict/test_not_configured.rb +6 -0
- data/test/configurations/strict/test_not_configured_default.rb +6 -0
- data/test/configurations/strict_types/test.rb +18 -0
- data/test/configurations/strict_types/test_defaults.rb +6 -0
- data/test/configurations/strict_types/test_hash_methods.rb +11 -0
- data/test/configurations/strict_types/test_methods.rb +6 -0
- data/test/configurations/strict_types/test_not_configured.rb +6 -0
- data/test/configurations/strict_types/test_not_configured_default.rb +6 -0
- data/test/configurations/strict_types_with_blocks/test.rb +22 -0
- data/test/configurations/strict_types_with_blocks/test_defaults.rb +6 -0
- data/test/configurations/strict_types_with_blocks/test_hash_methods.rb +14 -0
- data/test/configurations/strict_types_with_blocks/test_methods.rb +6 -0
- data/test/configurations/strict_types_with_blocks/test_not_configured.rb +6 -0
- data/test/configurations/strict_types_with_blocks/test_not_configured_default.rb +6 -0
- data/test/configurations/strict_with_blocks/test.rb +16 -0
- data/test/configurations/strict_with_blocks/test_defaults.rb +6 -0
- data/test/configurations/strict_with_blocks/test_hash_methods.rb +14 -0
- data/test/configurations/strict_with_blocks/test_methods.rb +6 -0
- data/test/configurations/strict_with_blocks/test_not_configured.rb +6 -0
- data/test/configurations/strict_with_blocks/test_not_configured_default.rb +6 -0
- data/test/support/setup.rb +173 -0
- data/test/support/shared.rb +11 -0
- data/test/test_helper.rb +6 -5
- metadata +148 -65
- data/test/configurations/test_configurable_with_blocks_configuration.rb +0 -54
- data/test/configurations/test_configuration.rb +0 -182
- data/test/configurations/test_configuration_methods.rb +0 -85
- data/test/configurations/test_stricter_configuration.rb +0 -173
- data/test/support/testmodules.rb +0 -10
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestStricterConfigurationWithBlock < Minitest::Test
|
4
|
-
|
5
|
-
module BlocksConfigurationTestModule
|
6
|
-
include Configurations
|
7
|
-
configurable :property1, :property2 do |value|
|
8
|
-
value.to_s + 'oooh'
|
9
|
-
end
|
10
|
-
configurable String, :property3, property4: [:property5, :property6] do |value|
|
11
|
-
raise ArgumentError, 'TEST2' unless %w(hello bye).include?(value)
|
12
|
-
value
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def setup
|
17
|
-
BlocksConfigurationTestModule.configure do |c|
|
18
|
-
c.property1 = :one
|
19
|
-
c.property2 = :two
|
20
|
-
c.property3 = 'hello'
|
21
|
-
c.property4.property5 = 'hello'
|
22
|
-
c.property4.property6 = 'bye'
|
23
|
-
end
|
24
|
-
|
25
|
-
@configuration = BlocksConfigurationTestModule.configuration
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_configurable_when_set_configurable_with_block
|
29
|
-
assert_equal 'oneoooh', @configuration.property1
|
30
|
-
assert_equal 'twooooh', @configuration.property2
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_nested_configurable_when_set_configurable_with_block
|
34
|
-
assert_equal 'hello', @configuration.property4.property5
|
35
|
-
assert_equal 'bye', @configuration.property4.property6
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_evaluates_block_after_type_assertion
|
39
|
-
assert_raises Configurations::ConfigurationError, 'TEST2' do
|
40
|
-
BlocksConfigurationTestModule.configure do |c|
|
41
|
-
c.property4.property5 = :bla
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_evaluates_block_for_nested_properties_when_set_configurable_with_block
|
47
|
-
assert_raises ArgumentError, 'TEST2' do
|
48
|
-
BlocksConfigurationTestModule.configure do |c|
|
49
|
-
c.property4.property5 = 'oh'
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
@@ -1,182 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestConfiguration < Minitest::Test
|
4
|
-
|
5
|
-
module ConfigurationTestModule
|
6
|
-
include Configurations
|
7
|
-
configuration_defaults do |c|
|
8
|
-
c.uh.this.is.neat = 'NEAT'
|
9
|
-
c.pah = 'PUH'
|
10
|
-
c.overwrite.this = ''
|
11
|
-
c.overwriteee = 'BLA'
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
module ConfigurationDefaultTestModule
|
16
|
-
include Configurations
|
17
|
-
configuration_defaults do |c|
|
18
|
-
c.set = 'SET'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
module ConfigurationNoDefaultTestModule
|
23
|
-
include Configurations
|
24
|
-
end
|
25
|
-
|
26
|
-
module ConfigurationNotConfiguredTestModule
|
27
|
-
include Configurations
|
28
|
-
configuration_defaults do |c|
|
29
|
-
c.set.set = 'SET'
|
30
|
-
end
|
31
|
-
|
32
|
-
not_configured do |property|
|
33
|
-
raise ArgumentError, "#{property} must be configured"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def setup
|
38
|
-
ConfigurationTestModule.configure do |c|
|
39
|
-
c.basic = 'BASIC'
|
40
|
-
c.class = 'KEY'
|
41
|
-
c.puts = 'OH'
|
42
|
-
c.overwriteee = 'YEAH'
|
43
|
-
c.overwrite.this = 'OVERWRITE'
|
44
|
-
c.github.repo = 'github.com/beatrichartz/configurations'
|
45
|
-
c.github.access_key = 'ABCDEF'
|
46
|
-
c.something.else.entirely.nested.deep.below = 'something'
|
47
|
-
end
|
48
|
-
|
49
|
-
@configuration = ConfigurationTestModule.configuration
|
50
|
-
@not_configured_configuration = ConfigurationNotConfiguredTestModule.configuration
|
51
|
-
@defaults_configuration = ConfigurationDefaultTestModule.configuration
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_configuration_is_subclass_of_host_module
|
55
|
-
assert_equal true, ConfigurationTestModule.const_defined?(:Configuration)
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_configuration_to_h
|
59
|
-
assert_equal({
|
60
|
-
uh:
|
61
|
-
{
|
62
|
-
this: { is: { neat: 'NEAT' } }
|
63
|
-
},
|
64
|
-
pah: 'PUH',
|
65
|
-
puts: 'OH',
|
66
|
-
overwrite: {
|
67
|
-
this: 'OVERWRITE'
|
68
|
-
},
|
69
|
-
overwriteee: 'YEAH',
|
70
|
-
basic: 'BASIC',
|
71
|
-
class: 'KEY',
|
72
|
-
github: {
|
73
|
-
repo: 'github.com/beatrichartz/configurations',
|
74
|
-
access_key: 'ABCDEF'
|
75
|
-
},
|
76
|
-
something: { else: { entirely: { nested: { deep: { below: 'something' } } } } }
|
77
|
-
}, @configuration.to_h)
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_configuration_from_h
|
81
|
-
old_to_h = @configuration.to_h.dup
|
82
|
-
assert_equal(old_to_h, ConfigurationTestModule.configure{ |c| c.from_h(old_to_h) }.to_h)
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_not_configurable_unless_block_given
|
86
|
-
assert_raises ArgumentError do
|
87
|
-
ConfigurationTestModule.configure
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_defaults
|
92
|
-
assert_equal 'PUH', @configuration.pah
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_defaults_without_configure
|
96
|
-
assert_equal 'SET', @defaults_configuration.set
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_no_defaults_without_configure
|
100
|
-
assert_nil ConfigurationNoDefaultTestModule.configuration
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_defaults_overwrite
|
104
|
-
assert_equal 'YEAH', @configuration.overwriteee
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_nested_defaults
|
108
|
-
assert_equal 'NEAT', @configuration.uh.this.is.neat
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_nested_defaults_overwrite
|
112
|
-
assert_equal 'OVERWRITE', @configuration.overwrite.this
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_configurable
|
116
|
-
assert_equal 'BASIC', @configuration.basic
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_keywords_configurable
|
120
|
-
assert_equal 'KEY', @configuration.class
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_nested_properties_with_same_key_configurable
|
124
|
-
assert_equal 'github.com/beatrichartz/configurations', @configuration.github.repo
|
125
|
-
assert_equal 'ABCDEF', @configuration.github.access_key
|
126
|
-
end
|
127
|
-
|
128
|
-
def test_deeply_nested_properties_configurable
|
129
|
-
assert_equal 'something', @configuration.something.else.entirely.nested.deep.below
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_respond_to_with_undefined_property
|
133
|
-
assert_equal true, @configuration.respond_to?(:somethings)
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_nil_with_undefined_property
|
137
|
-
assert_nil @configuration.somethings
|
138
|
-
end
|
139
|
-
|
140
|
-
def test_overwritten_kernel_method
|
141
|
-
assert_equal 'OH', @configuration.puts
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_not_configured_callback
|
145
|
-
assert_raises ArgumentError do
|
146
|
-
@not_configured_configuration.something
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def test_nested_not_configured_callback
|
151
|
-
assert_raises ArgumentError do
|
152
|
-
@not_configured_configuration.set.something
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def test_nested_configured_property_with_not_configured
|
157
|
-
assert_equal 'SET', @not_configured_configuration.set.set
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_respond_to_on_writer_while_writeable
|
161
|
-
ConfigurationTestModule.configure do |c|
|
162
|
-
assert_equal true, c.respond_to?(:pah=)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
def test_respond_to_on_writer_when_not_writeable
|
167
|
-
assert_equal false, @configuration.respond_to?(:pah=)
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_respond_to_on_kernel_method
|
171
|
-
assert_equal true, @configuration.respond_to?(:raise)
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_method_missing_on_non_kernel_method
|
175
|
-
assert_nil @configuration.blabla
|
176
|
-
end
|
177
|
-
|
178
|
-
def test_respond_to_missing_on_non_kernel_method
|
179
|
-
assert_equal true, @configuration.respond_to?(:bbaaaaa)
|
180
|
-
end
|
181
|
-
|
182
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestConfigurationMethods < Minitest::Test
|
4
|
-
|
5
|
-
module ConfigurationMethodsClassModule
|
6
|
-
include Configurations
|
7
|
-
|
8
|
-
class MyClass
|
9
|
-
attr_reader :props
|
10
|
-
def initialize(*props)
|
11
|
-
@props = props
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
context = 'CONTEXT'
|
16
|
-
configurable :property1, :property2
|
17
|
-
configuration_method :method1 do
|
18
|
-
MyClass.new(property1, property2)
|
19
|
-
end
|
20
|
-
configuration_method :method2 do
|
21
|
-
context + property1.to_s
|
22
|
-
end
|
23
|
-
configuration_method :method3 do |arg|
|
24
|
-
arg + property1.to_s
|
25
|
-
end
|
26
|
-
configuration_method :kernel_raise do
|
27
|
-
raise StandardError, 'hell'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
module ConfigurationNoMethodsClassModule
|
32
|
-
include Configurations
|
33
|
-
|
34
|
-
configurable :property3
|
35
|
-
end
|
36
|
-
|
37
|
-
def setup
|
38
|
-
ConfigurationMethodsClassModule.configure do |c|
|
39
|
-
c.property1 = :one
|
40
|
-
c.property2 = :two
|
41
|
-
end
|
42
|
-
|
43
|
-
ConfigurationNoMethodsClassModule.configure do |c|
|
44
|
-
c.property3 = :three
|
45
|
-
end
|
46
|
-
|
47
|
-
@configuration = ConfigurationMethodsClassModule.configuration
|
48
|
-
@no_method_configuration = ConfigurationNoMethodsClassModule.configuration
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_configuration_method
|
52
|
-
assert_equal [:one, :two], @configuration.method1.props
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_configuration_method_with_context
|
56
|
-
assert_equal 'CONTEXTone', @configuration.method2
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_configuration_method_with_arguments
|
60
|
-
assert_equal 'ARGone', @configuration.method3('ARG')
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_kernel_methods_in_configuration_method
|
64
|
-
assert_raises StandardError, 'hell' do
|
65
|
-
@configuration.kernel_raise
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_configuration_method_overwrite
|
70
|
-
assert_raises ArgumentError do
|
71
|
-
ConfigurationMethodsClassModule.module_eval do
|
72
|
-
configuration_method :property2 do |c|
|
73
|
-
MyClass.new(c.property2)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_configuration_methods_unaffected
|
80
|
-
assert_raises NoMethodError do
|
81
|
-
@no_method_configuration.method3('ARG')
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
@@ -1,173 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestStricterConfiguration < Minitest::Test
|
4
|
-
module StrictConfigurationTestModule
|
5
|
-
include Configurations
|
6
|
-
|
7
|
-
configurable :property1, :property2
|
8
|
-
configurable String, :property3
|
9
|
-
configurable Symbol, property4: :property5, property6: [:property7, :property8]
|
10
|
-
configurable Fixnum, property6: :property14
|
11
|
-
configurable Fixnum, property4: :property12
|
12
|
-
configurable Array, property9: { property10: { property11: :property12 } }
|
13
|
-
configurable Hash, property9: { property10: { property11: :property13 } }
|
14
|
-
end
|
15
|
-
|
16
|
-
module StrictConfigurationTestModuleDefaultsError
|
17
|
-
include Configurations
|
18
|
-
|
19
|
-
configurable :property1, :property2
|
20
|
-
|
21
|
-
not_configured do |prop|
|
22
|
-
raise StandardError, 'Problem here'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def setup
|
27
|
-
StrictConfigurationTestModule.configure do |c|
|
28
|
-
c.property1 = 'BASIC1'
|
29
|
-
c.property2 = 'BASIC2'
|
30
|
-
c.property3 = 'STRING'
|
31
|
-
c.property4.property5 = :something
|
32
|
-
c.property4.property12 = 12
|
33
|
-
c.property6.property7 = :anything
|
34
|
-
c.property6.property8 = :everything
|
35
|
-
c.property6.property14 = 555
|
36
|
-
c.property9.property10.property11.property12 = %w(here I am)
|
37
|
-
c.property9.property10.property11.property13 = { hi: :bye }
|
38
|
-
end
|
39
|
-
StrictConfigurationTestModuleDefaultsError.configure do |c|
|
40
|
-
c.property1 = 'BASIC3'
|
41
|
-
end
|
42
|
-
|
43
|
-
@configuration = StrictConfigurationTestModule.configuration
|
44
|
-
@configuration_defaults_error = StrictConfigurationTestModuleDefaultsError.configuration
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_configurable_when_set_configurable
|
48
|
-
assert_equal 'BASIC1', @configuration.property1
|
49
|
-
assert_equal 'BASIC2', @configuration.property2
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_configurable_when_set_nested_configurable
|
53
|
-
assert_equal :something, @configuration.property4.property5
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_configurable_with_nested_calls_and_deeply_nested_property
|
57
|
-
assert_equal 12, @configuration.property4.property12
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_configurable_with_nested_calls_and_added_property
|
61
|
-
assert_equal 555, @configuration.property6.property14
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_configurable_type_assertion_with_nested_calls_and_added_property
|
65
|
-
assert_raises Configurations::ConfigurationError do
|
66
|
-
StrictConfigurationTestModule.configure do |c|
|
67
|
-
c.property6.property14 = ''
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_strict_configuration_to_h
|
73
|
-
assert_equal({
|
74
|
-
property4: {
|
75
|
-
property5: :something,
|
76
|
-
property12: 12
|
77
|
-
},
|
78
|
-
property6: {
|
79
|
-
property7: :anything,
|
80
|
-
property8: :everything,
|
81
|
-
property14: 555
|
82
|
-
},
|
83
|
-
property9: {
|
84
|
-
property10: {
|
85
|
-
property11: {
|
86
|
-
property12: %w(here I am),
|
87
|
-
property13: {
|
88
|
-
hi: :bye
|
89
|
-
}
|
90
|
-
}
|
91
|
-
}
|
92
|
-
},
|
93
|
-
property1: 'BASIC1',
|
94
|
-
property2: 'BASIC2',
|
95
|
-
property3: 'STRING'
|
96
|
-
}, @configuration.to_h)
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_strict_configuration_from_h
|
100
|
-
old_to_h = @configuration.to_h.dup
|
101
|
-
assert_equal(old_to_h, StrictConfigurationTestModule.configure{ |c| c.from_h(old_to_h) }.to_h)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_configurable_with_same_key_when_set_nested_configurable
|
105
|
-
assert_equal :anything, @configuration.property6.property7
|
106
|
-
assert_equal :everything, @configuration.property6.property8
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_configurable_with_deeply_nested_property
|
110
|
-
assert_equal %w(here I am), @configuration.property9.property10.property11.property12
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_configurable_with_nested_calls_and_deeply_nested_property
|
114
|
-
assert_equal({ hi: :bye }, @configuration.property9.property10.property11.property13)
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_configurable_type_restricted_with_nested_calls_and_deeply_nested_property
|
118
|
-
assert_raises Configurations::ConfigurationError do
|
119
|
-
StrictConfigurationTestModule.configure do |c|
|
120
|
-
c.property9.property10.property11.property13 = ''
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def test_not_configurable_with_wrong_type
|
126
|
-
assert_raises Configurations::ConfigurationError do
|
127
|
-
StrictConfigurationTestModule.configure do |c|
|
128
|
-
c.property3 = {}
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_not_configurable_with_undefined_property
|
134
|
-
assert_raises NoMethodError do
|
135
|
-
StrictConfigurationTestModule.configure do |c|
|
136
|
-
c.property4 = {}
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_respond_to_with_undefined_property
|
142
|
-
assert_equal false, @configuration.respond_to?(:property12)
|
143
|
-
end
|
144
|
-
|
145
|
-
def test_not_callable_with_undefined_property
|
146
|
-
assert_raises NoMethodError do
|
147
|
-
@configuration.property12
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_not_configured_callback
|
152
|
-
assert_raises StandardError do
|
153
|
-
@configuration_defaults_error.property2
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def test_not_configured_callback_not_triggered_for_configured
|
158
|
-
assert_equal 'BASIC3', @configuration_defaults_error.property1
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_not_configurable_with_undefined_nested_property
|
162
|
-
assert_raises NoMethodError do
|
163
|
-
StrictConfigurationTestModule.configure do |c|
|
164
|
-
c.property6.property9 = {}
|
165
|
-
end
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_callable_with_undefined_nested_property
|
170
|
-
assert_nil @configuration.property6.property9
|
171
|
-
end
|
172
|
-
|
173
|
-
end
|