configatron 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/configatron.rb +1 -1
- data/lib/configatron/configatron.rb +1 -0
- data/lib/configatron/store.rb +5 -3
- metadata +15 -34
- data/doc/classes/Class.html +0 -170
- data/doc/classes/Configatron.html +0 -303
- data/doc/classes/Configatron/LockedNamespace.html +0 -146
- data/doc/classes/Configatron/ProtectedParameter.html +0 -146
- data/doc/classes/Configatron/Store.html +0 -739
- data/doc/classes/Kernel.html +0 -144
- data/doc/created.rid +0 -1
- data/doc/files/README.html +0 -309
- data/doc/files/lib/configatron/configatron_rb.html +0 -108
- data/doc/files/lib/configatron/core_ext/class_rb.html +0 -101
- data/doc/files/lib/configatron/core_ext/kernel_rb.html +0 -101
- data/doc/files/lib/configatron/core_ext/object_rb.html +0 -101
- data/doc/files/lib/configatron/core_ext/string_rb.html +0 -101
- data/doc/files/lib/configatron/errors_rb.html +0 -101
- data/doc/files/lib/configatron/store_rb.html +0 -101
- data/doc/files/lib/configatron_rb.html +0 -108
- data/doc/fr_class_index.html +0 -32
- data/doc/fr_file_index.html +0 -35
- data/doc/fr_method_index.html +0 -53
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
- data/spec/lib/class_spec.rb +0 -28
- data/spec/lib/configatron_spec.rb +0 -434
- data/spec/lib/futurama.yml +0 -6
- data/spec/lib/lost.yml +0 -14
- data/spec/spec.opts +0 -2
- data/spec/spec_helper.rb +0 -4
data/doc/rdoc-style.css
DELETED
@@ -1,208 +0,0 @@
|
|
1
|
-
|
2
|
-
body {
|
3
|
-
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
-
font-size: 90%;
|
5
|
-
margin: 0;
|
6
|
-
margin-left: 40px;
|
7
|
-
padding: 0;
|
8
|
-
background: white;
|
9
|
-
}
|
10
|
-
|
11
|
-
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
-
h1 { font-size: 150%; }
|
13
|
-
h2,h3,h4 { margin-top: 1em; }
|
14
|
-
|
15
|
-
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
-
a:hover { background: #039; color: #eef; }
|
17
|
-
|
18
|
-
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
-
td > a {
|
20
|
-
background: transparent;
|
21
|
-
color: #039;
|
22
|
-
text-decoration: none;
|
23
|
-
}
|
24
|
-
|
25
|
-
/* and inside a section title */
|
26
|
-
.section-title > a {
|
27
|
-
background: transparent;
|
28
|
-
color: #eee;
|
29
|
-
text-decoration: none;
|
30
|
-
}
|
31
|
-
|
32
|
-
/* === Structural elements =================================== */
|
33
|
-
|
34
|
-
div#index {
|
35
|
-
margin: 0;
|
36
|
-
margin-left: -40px;
|
37
|
-
padding: 0;
|
38
|
-
font-size: 90%;
|
39
|
-
}
|
40
|
-
|
41
|
-
|
42
|
-
div#index a {
|
43
|
-
margin-left: 0.7em;
|
44
|
-
}
|
45
|
-
|
46
|
-
div#index .section-bar {
|
47
|
-
margin-left: 0px;
|
48
|
-
padding-left: 0.7em;
|
49
|
-
background: #ccc;
|
50
|
-
font-size: small;
|
51
|
-
}
|
52
|
-
|
53
|
-
|
54
|
-
div#classHeader, div#fileHeader {
|
55
|
-
width: auto;
|
56
|
-
color: white;
|
57
|
-
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
-
margin: 0;
|
59
|
-
margin-left: -40px;
|
60
|
-
border-bottom: 3px solid #006;
|
61
|
-
}
|
62
|
-
|
63
|
-
div#classHeader a, div#fileHeader a {
|
64
|
-
background: inherit;
|
65
|
-
color: white;
|
66
|
-
}
|
67
|
-
|
68
|
-
div#classHeader td, div#fileHeader td {
|
69
|
-
background: inherit;
|
70
|
-
color: white;
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
div#fileHeader {
|
75
|
-
background: #057;
|
76
|
-
}
|
77
|
-
|
78
|
-
div#classHeader {
|
79
|
-
background: #048;
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
.class-name-in-header {
|
84
|
-
font-size: 180%;
|
85
|
-
font-weight: bold;
|
86
|
-
}
|
87
|
-
|
88
|
-
|
89
|
-
div#bodyContent {
|
90
|
-
padding: 0 1.5em 0 1.5em;
|
91
|
-
}
|
92
|
-
|
93
|
-
div#description {
|
94
|
-
padding: 0.5em 1.5em;
|
95
|
-
background: #efefef;
|
96
|
-
border: 1px dotted #999;
|
97
|
-
}
|
98
|
-
|
99
|
-
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
-
color: #125;;
|
101
|
-
background: transparent;
|
102
|
-
}
|
103
|
-
|
104
|
-
div#validator-badges {
|
105
|
-
text-align: center;
|
106
|
-
}
|
107
|
-
div#validator-badges img { border: 0; }
|
108
|
-
|
109
|
-
div#copyright {
|
110
|
-
color: #333;
|
111
|
-
background: #efefef;
|
112
|
-
font: 0.75em sans-serif;
|
113
|
-
margin-top: 5em;
|
114
|
-
margin-bottom: 0;
|
115
|
-
padding: 0.5em 2em;
|
116
|
-
}
|
117
|
-
|
118
|
-
|
119
|
-
/* === Classes =================================== */
|
120
|
-
|
121
|
-
table.header-table {
|
122
|
-
color: white;
|
123
|
-
font-size: small;
|
124
|
-
}
|
125
|
-
|
126
|
-
.type-note {
|
127
|
-
font-size: small;
|
128
|
-
color: #DEDEDE;
|
129
|
-
}
|
130
|
-
|
131
|
-
.xxsection-bar {
|
132
|
-
background: #eee;
|
133
|
-
color: #333;
|
134
|
-
padding: 3px;
|
135
|
-
}
|
136
|
-
|
137
|
-
.section-bar {
|
138
|
-
color: #333;
|
139
|
-
border-bottom: 1px solid #999;
|
140
|
-
margin-left: -20px;
|
141
|
-
}
|
142
|
-
|
143
|
-
|
144
|
-
.section-title {
|
145
|
-
background: #79a;
|
146
|
-
color: #eee;
|
147
|
-
padding: 3px;
|
148
|
-
margin-top: 2em;
|
149
|
-
margin-left: -30px;
|
150
|
-
border: 1px solid #999;
|
151
|
-
}
|
152
|
-
|
153
|
-
.top-aligned-row { vertical-align: top }
|
154
|
-
.bottom-aligned-row { vertical-align: bottom }
|
155
|
-
|
156
|
-
/* --- Context section classes ----------------------- */
|
157
|
-
|
158
|
-
.context-row { }
|
159
|
-
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
-
.context-item-value { font-size: small; color: #448; }
|
161
|
-
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
-
|
163
|
-
/* --- Method classes -------------------------- */
|
164
|
-
.method-detail {
|
165
|
-
background: #efefef;
|
166
|
-
padding: 0;
|
167
|
-
margin-top: 0.5em;
|
168
|
-
margin-bottom: 1em;
|
169
|
-
border: 1px dotted #ccc;
|
170
|
-
}
|
171
|
-
.method-heading {
|
172
|
-
color: black;
|
173
|
-
background: #ccc;
|
174
|
-
border-bottom: 1px solid #666;
|
175
|
-
padding: 0.2em 0.5em 0 0.5em;
|
176
|
-
}
|
177
|
-
.method-signature { color: black; background: inherit; }
|
178
|
-
.method-name { font-weight: bold; }
|
179
|
-
.method-args { font-style: italic; }
|
180
|
-
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
-
|
182
|
-
/* --- Source code sections -------------------- */
|
183
|
-
|
184
|
-
a.source-toggle { font-size: 90%; }
|
185
|
-
div.method-source-code {
|
186
|
-
background: #262626;
|
187
|
-
color: #ffdead;
|
188
|
-
margin: 1em;
|
189
|
-
padding: 0.5em;
|
190
|
-
border: 1px dashed #999;
|
191
|
-
overflow: hidden;
|
192
|
-
}
|
193
|
-
|
194
|
-
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
-
|
196
|
-
/* --- Ruby keyword styles --------------------- */
|
197
|
-
|
198
|
-
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
-
|
200
|
-
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
-
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
-
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
-
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
-
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
-
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
-
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
-
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
-
.ruby-value { color: #7fffd4; background: transparent; }
|
data/spec/lib/class_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
-
|
3
|
-
configatron.foo.bar = :bar
|
4
|
-
configatron.a.b.c.d = 'D'
|
5
|
-
|
6
|
-
class Foo
|
7
|
-
end
|
8
|
-
|
9
|
-
module A
|
10
|
-
module B
|
11
|
-
class C
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe Class do
|
17
|
-
|
18
|
-
describe 'to_configatron' do
|
19
|
-
|
20
|
-
it 'should return a Configatron::Store object based on the name of the class' do
|
21
|
-
Foo.to_configatron.should be_kind_of(Configatron::Store)
|
22
|
-
Foo.to_configatron.bar.should == :bar
|
23
|
-
A::B::C.to_configatron.d.should == 'D'
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,434 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
-
|
3
|
-
describe "configatron" do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
configatron.reset!
|
7
|
-
end
|
8
|
-
|
9
|
-
describe 'protect' do
|
10
|
-
|
11
|
-
it 'should protect a parameter and prevent it from being set' do
|
12
|
-
configatron.one = 1
|
13
|
-
configatron.protect(:one)
|
14
|
-
lambda{configatron.one = 'one'}.should raise_error(Configatron::ProtectedParameter)
|
15
|
-
configatron.one.should == 1
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'should protect basic methods' do
|
19
|
-
lambda{configatron.object_id = 123456}.should raise_error(Configatron::ProtectedParameter)
|
20
|
-
lambda{configatron.foo.object_id = 123456}.should raise_error(Configatron::ProtectedParameter)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should work with nested parameters' do
|
24
|
-
configatron.one = 1
|
25
|
-
configatron.letters.a = 'A'
|
26
|
-
configatron.letters.b = 'B'
|
27
|
-
configatron.letters.protect(:a)
|
28
|
-
lambda{configatron.letters.a = 'a'}.should raise_error(Configatron::ProtectedParameter)
|
29
|
-
configatron.letters.a.should == 'A'
|
30
|
-
configatron.protect(:letters)
|
31
|
-
lambda{configatron.letters.a = 'a'}.should raise_error(Configatron::ProtectedParameter)
|
32
|
-
lambda{configatron.letters = 'letter'}.should raise_error(Configatron::ProtectedParameter)
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should work with configure_from_hash' do
|
36
|
-
configatron.one = 1
|
37
|
-
configatron.letters.a = 'A'
|
38
|
-
configatron.letters.b = 'B'
|
39
|
-
configatron.letters.protect(:a)
|
40
|
-
lambda{configatron.configure_from_hash(:letters => {:a => 'a'})}.should raise_error(Configatron::ProtectedParameter)
|
41
|
-
configatron.letters.a.should == 'A'
|
42
|
-
configatron.protect(:letters)
|
43
|
-
lambda{configatron.letters.configure_from_hash(:a => 'a')}.should raise_error(Configatron::ProtectedParameter)
|
44
|
-
lambda{configatron.configure_from_hash(:letters => 'letters')}.should raise_error(Configatron::ProtectedParameter)
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should be able to protect all parameters at once" do
|
48
|
-
configatron.one = 1
|
49
|
-
configatron.letters.a = 'A'
|
50
|
-
configatron.letters.b = 'B'
|
51
|
-
configatron.protect_all!
|
52
|
-
[:a,:b].each do |l|
|
53
|
-
lambda{configatron.configure_from_hash(:letters => {l => l.to_s})}.should raise_error(Configatron::ProtectedParameter)
|
54
|
-
configatron.letters.send(l).should == l.to_s.upcase
|
55
|
-
end
|
56
|
-
lambda{configatron.letters.configure_from_hash(:a => 'a')}.should raise_error(Configatron::ProtectedParameter)
|
57
|
-
lambda{configatron.configure_from_hash(:letters => 'letters')}.should raise_error(Configatron::ProtectedParameter)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should be able to unprotect a parameter" do
|
61
|
-
configatron.one = 1
|
62
|
-
configatron.protect(:one)
|
63
|
-
configatron.unprotect(:one)
|
64
|
-
lambda{configatron.one = 2}.should_not raise_error
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should be able to unprotect all parameters at once" do
|
68
|
-
configatron.one = 1
|
69
|
-
configatron.letters.a = 'A'
|
70
|
-
configatron.letters.b = 'B'
|
71
|
-
configatron.protect_all!
|
72
|
-
configatron.unprotect_all!
|
73
|
-
lambda{configatron.one = 2}.should_not raise_error
|
74
|
-
lambda{configatron.letters.configure_from_hash(:a => 'a')}.should_not raise_error
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
|
79
|
-
describe 'lock' do
|
80
|
-
before :each do
|
81
|
-
configatron.letters.a = 'A'
|
82
|
-
configatron.letters.b = 'B'
|
83
|
-
configatron.letters.greek.alpha = 'alpha'
|
84
|
-
configatron.lock(:letters)
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should allow setting of existing parameters in locked parameter' do
|
88
|
-
lambda { configatron.letters.a = 'a' }.should_not raise_error
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'should not allow setting of a parameter that is not already set' do
|
92
|
-
lambda { configatron.letters.c = 'C' }.should raise_error(Configatron::LockedNamespace)
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should allow setting of existing parameters in child of locked parameter' do
|
96
|
-
lambda { configatron.letters.greek.alpha = 'a' }.should_not raise_error
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'should not allow setting of new parameters in child of locked parameter' do
|
100
|
-
lambda { configatron.letters.greek.beta = 'beta' }.should raise_error(Configatron::LockedNamespace)
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'should not affect parameters below the locked namespace' do
|
104
|
-
lambda { configatron.one = 1 }.should_not raise_error
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'should raise an ArgumentError if unknown namespace is locked' do
|
108
|
-
lambda { configatron.lock(:numbers).should raise_error(ArgumentError) }
|
109
|
-
end
|
110
|
-
|
111
|
-
describe 'then unlock' do
|
112
|
-
before :each do
|
113
|
-
configatron.unlock(:letters)
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'should allow setting of new parameter in unlocked namespace' do
|
117
|
-
lambda { configatron.letters.d = 'd' }.should_not raise_error
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'should allow setting of new parameter in unlocked namespace\'s child' do
|
121
|
-
lambda { configatron.letters.greek.zeta = 'z' }.should_not raise_error
|
122
|
-
end
|
123
|
-
|
124
|
-
it 'should raise an ArgumentError if unknown namespace is unlocked' do
|
125
|
-
lambda { configatron.unlock(:numbers).should raise_error(ArgumentError) }
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe 'temp' do
|
131
|
-
|
132
|
-
it 'should revert back to the original parameters when the block ends' do
|
133
|
-
configatron.one = 1
|
134
|
-
configatron.letters.a = 'A'
|
135
|
-
configatron.letters.b = 'B'
|
136
|
-
configatron.temp do
|
137
|
-
configatron.letters.b = 'bb'
|
138
|
-
configatron.letters.c = 'c'
|
139
|
-
configatron.one.should == 1
|
140
|
-
configatron.letters.a.should == 'A'
|
141
|
-
configatron.letters.b.should == 'bb'
|
142
|
-
configatron.letters.c.should == 'c'
|
143
|
-
end
|
144
|
-
configatron.one.should == 1
|
145
|
-
configatron.letters.a.should == 'A'
|
146
|
-
configatron.letters.b.should == 'B'
|
147
|
-
configatron.letters.c.should be_nil
|
148
|
-
end
|
149
|
-
|
150
|
-
it 'should take an optional hash of parameters' do
|
151
|
-
configatron.one = 1
|
152
|
-
configatron.letters.a = 'A'
|
153
|
-
configatron.letters.b = 'B'
|
154
|
-
configatron.temp(:letters => {:b => 'bb', :c => 'c'}) do
|
155
|
-
configatron.one.should == 1
|
156
|
-
configatron.letters.a.should == 'A'
|
157
|
-
configatron.letters.b.should == 'bb'
|
158
|
-
configatron.letters.c.should == 'c'
|
159
|
-
end
|
160
|
-
configatron.one.should == 1
|
161
|
-
configatron.letters.a.should == 'A'
|
162
|
-
configatron.letters.b.should == 'B'
|
163
|
-
configatron.letters.c.should be_nil
|
164
|
-
end
|
165
|
-
|
166
|
-
it 'should work the same as temp_start/temp_end' do
|
167
|
-
configatron.one = 1
|
168
|
-
configatron.temp_start
|
169
|
-
configatron.one = 'ONE'
|
170
|
-
configatron.one.should == 'ONE'
|
171
|
-
configatron.temp_end
|
172
|
-
configatron.one.should == 1
|
173
|
-
end
|
174
|
-
|
175
|
-
it 'should be able to nest' do
|
176
|
-
configatron.one = 1
|
177
|
-
configatron.letters.a = 'A'
|
178
|
-
configatron.letters.b = 'B'
|
179
|
-
configatron.temp do
|
180
|
-
configatron.letters.b = 'bb'
|
181
|
-
configatron.letters.c = 'c'
|
182
|
-
configatron.one.should == 1
|
183
|
-
configatron.letters.a.should == 'A'
|
184
|
-
configatron.letters.b.should == 'bb'
|
185
|
-
configatron.letters.c.should == 'c'
|
186
|
-
configatron.temp do
|
187
|
-
configatron.letters.b = 'bbb'
|
188
|
-
configatron.one.should == 1
|
189
|
-
configatron.letters.a.should == 'A'
|
190
|
-
configatron.letters.b.should == 'bbb'
|
191
|
-
configatron.letters.c.should == 'c'
|
192
|
-
end
|
193
|
-
end
|
194
|
-
configatron.one.should == 1
|
195
|
-
configatron.letters.a.should == 'A'
|
196
|
-
configatron.letters.b.should == 'B'
|
197
|
-
configatron.letters.c.should be_nil
|
198
|
-
end
|
199
|
-
|
200
|
-
end
|
201
|
-
|
202
|
-
describe 'configure_from_hash' do
|
203
|
-
|
204
|
-
it 'should configure itself from a hash' do
|
205
|
-
configatron.foo.should be_nil
|
206
|
-
configatron.configure_from_hash(:foo => :bar)
|
207
|
-
configatron.foo.should == :bar
|
208
|
-
end
|
209
|
-
|
210
|
-
it 'should handled deeply nested params' do
|
211
|
-
configatron.friends.rachel.should be_nil
|
212
|
-
configatron.configure_from_hash(:friends => {:rachel => 'Rachel Green'})
|
213
|
-
configatron.friends.rachel.should == 'Rachel Green'
|
214
|
-
end
|
215
|
-
|
216
|
-
it 'should not remove previously defined params' do
|
217
|
-
configatron.friends.rachel = 'Rachel Green'
|
218
|
-
configatron.friends.ross = 'Ross Gellar'
|
219
|
-
configatron.friends.monica = 'Monica Gellar'
|
220
|
-
configatron.configure_from_hash(:friends => {:rachel => 'R. Green', :monica => 'Monica Bing'})
|
221
|
-
configatron.friends.ross.should == 'Ross Gellar'
|
222
|
-
configatron.friends.rachel.should == 'R. Green'
|
223
|
-
configatron.friends.monica.should == 'Monica Bing'
|
224
|
-
end
|
225
|
-
|
226
|
-
end
|
227
|
-
|
228
|
-
describe 'configure_from_yaml' do
|
229
|
-
|
230
|
-
it 'should configure itself from a yaml file' do
|
231
|
-
configatron.futurama.should be_nil
|
232
|
-
configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'futurama.yml'))
|
233
|
-
configatron.futurama.robots.bender.should == 'Bender The Robot'
|
234
|
-
end
|
235
|
-
|
236
|
-
it 'should not remove previously defined params' do
|
237
|
-
configatron.futurama.mutants.leela = 'Leela'
|
238
|
-
configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'futurama.yml'))
|
239
|
-
configatron.futurama.robots.bender.should == 'Bender The Robot'
|
240
|
-
configatron.futurama.mutants.leela = 'Leela'
|
241
|
-
end
|
242
|
-
|
243
|
-
it "should fail silently if the file doesn't exist" do
|
244
|
-
lambda{configatron.configure_from_yaml('i_dont_exist.yml')}.should_not raise_error
|
245
|
-
end
|
246
|
-
|
247
|
-
it "should be able to load a specific hash from the file" do
|
248
|
-
configatron.others.should be_nil
|
249
|
-
configatron.survivors.should be_nil
|
250
|
-
configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'lost.yml'), :hash => "survivors")
|
251
|
-
configatron.others.should be_nil
|
252
|
-
configatron.survivors.should be_nil
|
253
|
-
configatron.on_island.jack.should == 'Jack Shepherd'
|
254
|
-
end
|
255
|
-
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'should return a parameter' do
|
259
|
-
configatron.foo = :bar
|
260
|
-
configatron.foo.should == :bar
|
261
|
-
end
|
262
|
-
|
263
|
-
it 'should return a nested parameter' do
|
264
|
-
configatron.children.dylan = 'Dylan Bates'
|
265
|
-
configatron.children.dylan.should == 'Dylan Bates'
|
266
|
-
end
|
267
|
-
|
268
|
-
it 'should set a nested parameter and not remove previously defined params' do
|
269
|
-
configatron.friends.rachel = 'Rachel Green'
|
270
|
-
configatron.friends.rachel.should == 'Rachel Green'
|
271
|
-
configatron.friends.ross = 'Ross Gellar'
|
272
|
-
configatron.friends.ross.should == 'Ross Gellar'
|
273
|
-
configatron.friends.monica = 'Monica Gellar'
|
274
|
-
configatron.friends.monica.should == 'Monica Gellar'
|
275
|
-
configatron.friends.rachel = 'R. Green'
|
276
|
-
configatron.friends.monica = 'Monica Bing'
|
277
|
-
configatron.friends.rachel.should == 'R. Green'
|
278
|
-
configatron.friends.ross.should == 'Ross Gellar'
|
279
|
-
configatron.friends.monica.should == 'Monica Bing'
|
280
|
-
end
|
281
|
-
|
282
|
-
it 'should return the Configatron instance' do
|
283
|
-
configatron.should be_is_a(Configatron)
|
284
|
-
end
|
285
|
-
|
286
|
-
describe 'to_hash' do
|
287
|
-
|
288
|
-
it 'should return a hash of all the params' do
|
289
|
-
configatron.one = 1
|
290
|
-
configatron.letters.a = 'A'
|
291
|
-
configatron.letters.b = 'B'
|
292
|
-
configatron.to_hash.should == {:one => 1, :letters => {:a => 'A', :b => 'B'}}
|
293
|
-
end
|
294
|
-
|
295
|
-
end
|
296
|
-
|
297
|
-
describe 'inspect' do
|
298
|
-
|
299
|
-
it 'should call return the inspect method of the to_hash method' do
|
300
|
-
configatron.one = 1
|
301
|
-
configatron.letters.a = 'A'
|
302
|
-
configatron.letters.b = 'B'
|
303
|
-
configatron.numbers.small.one = 1
|
304
|
-
configatron.numbers.small.others = [2,3]
|
305
|
-
configatron.numbers.big.one.hundred = '100'
|
306
|
-
|
307
|
-
configatron.inspect.should == %{
|
308
|
-
configatron.letters.a = "A"
|
309
|
-
configatron.letters.b = "B"
|
310
|
-
configatron.numbers.big.one.hundred = "100"
|
311
|
-
configatron.numbers.small.one = 1
|
312
|
-
configatron.numbers.small.others = [2, 3]
|
313
|
-
configatron.one = 1
|
314
|
-
}.strip
|
315
|
-
|
316
|
-
end
|
317
|
-
|
318
|
-
end
|
319
|
-
|
320
|
-
describe 'nil?' do
|
321
|
-
|
322
|
-
it 'should return true if there are no parameters' do
|
323
|
-
configatron.should be_nil
|
324
|
-
configatron.friends.should be_nil
|
325
|
-
end
|
326
|
-
|
327
|
-
it 'should return true if there are no parameters on a nested parameter' do
|
328
|
-
configatron.friends.monica.should be_nil
|
329
|
-
end
|
330
|
-
|
331
|
-
end
|
332
|
-
|
333
|
-
describe 'retrieve' do
|
334
|
-
|
335
|
-
it 'should retrieve a parameter' do
|
336
|
-
configatron.office = 'Michael'
|
337
|
-
configatron.retrieve(:office).should == 'Michael'
|
338
|
-
end
|
339
|
-
|
340
|
-
it 'should return the optional second parameter if the config setting is nil' do
|
341
|
-
configatron.retrieve(:office, 'Stanley').should == 'Stanley'
|
342
|
-
end
|
343
|
-
|
344
|
-
it 'should work with a symbol or a string' do
|
345
|
-
configatron.office = 'Michael'
|
346
|
-
configatron.retrieve(:office).should == 'Michael'
|
347
|
-
configatron.retrieve('office').should == 'Michael'
|
348
|
-
end
|
349
|
-
|
350
|
-
it 'should work on nested parameters' do
|
351
|
-
configatron.the.office = 'Michael'
|
352
|
-
configatron.the.retrieve(:office).should == 'Michael'
|
353
|
-
configatron.the.retrieve('office').should == 'Michael'
|
354
|
-
end
|
355
|
-
|
356
|
-
end
|
357
|
-
|
358
|
-
describe 'remove' do
|
359
|
-
|
360
|
-
it 'should remove a parameter' do
|
361
|
-
configatron.movies = 'Pulp Fiction'
|
362
|
-
configatron.movies.should == 'Pulp Fiction'
|
363
|
-
configatron.remove(:movies)
|
364
|
-
configatron.movies.should be_nil
|
365
|
-
end
|
366
|
-
|
367
|
-
it 'should remove a nested parameter' do
|
368
|
-
configatron.the.movies = 'Pulp Fiction'
|
369
|
-
configatron.the.movies.should == 'Pulp Fiction'
|
370
|
-
configatron.the.remove(:movies)
|
371
|
-
configatron.the.movies.should be_nil
|
372
|
-
end
|
373
|
-
|
374
|
-
it 'should work with a symbol or a string' do
|
375
|
-
configatron.the.movies = 'Pulp Fiction'
|
376
|
-
configatron.the.office = 'Michael'
|
377
|
-
configatron.the.remove(:movies)
|
378
|
-
configatron.the.movies.should be_nil
|
379
|
-
configatron.the.remove('office')
|
380
|
-
configatron.the.office.should be_nil
|
381
|
-
end
|
382
|
-
|
383
|
-
it 'should remove all sub-parameters' do
|
384
|
-
configatron.the.movies = 'Pulp Fiction'
|
385
|
-
configatron.the.office = 'Michael'
|
386
|
-
configatron.remove(:the)
|
387
|
-
configatron.the.should be_nil
|
388
|
-
configatron.the.movies.should be_nil
|
389
|
-
end
|
390
|
-
|
391
|
-
end
|
392
|
-
|
393
|
-
describe 'set_default' do
|
394
|
-
|
395
|
-
it 'should set a default parameter value' do
|
396
|
-
configatron.set_default(:movies, 'Pulp Fiction')
|
397
|
-
configatron.movies.should == 'Pulp Fiction'
|
398
|
-
end
|
399
|
-
|
400
|
-
it 'should set a default parameter value for a nested parameter' do
|
401
|
-
configatron.the.set_default(:movies, 'Pulp Fiction')
|
402
|
-
configatron.the.movies.should == 'Pulp Fiction'
|
403
|
-
end
|
404
|
-
|
405
|
-
it 'should not set the parameter if it is already set' do
|
406
|
-
configatron.movies = 'Transformers'
|
407
|
-
configatron.set_default(:movies, 'Pulp Fiction')
|
408
|
-
configatron.movies.should == 'Transformers'
|
409
|
-
end
|
410
|
-
|
411
|
-
it 'should not set the nested parameter if it is already set' do
|
412
|
-
configatron.the.movies = 'Transformers'
|
413
|
-
configatron.the.set_default(:movies, 'Pulp Fiction')
|
414
|
-
configatron.the.movies.should == 'Transformers'
|
415
|
-
end
|
416
|
-
|
417
|
-
end
|
418
|
-
|
419
|
-
describe 'reset!' do
|
420
|
-
|
421
|
-
it 'should clear out all parameter' do
|
422
|
-
configatron.one = 1
|
423
|
-
configatron.letters.a = 'A'
|
424
|
-
configatron.letters.b = 'B'
|
425
|
-
configatron.one.should == 1
|
426
|
-
configatron.letters.a.should == 'A'
|
427
|
-
configatron.reset!
|
428
|
-
configatron.one.should be_nil
|
429
|
-
configatron.letters.a.should be_nil
|
430
|
-
end
|
431
|
-
|
432
|
-
end
|
433
|
-
|
434
|
-
end
|