isomer 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,13 +16,13 @@ class Isomer::Sources::Yaml < Isomer::Sources::Base
16
16
  def load
17
17
  if File.exists?(file)
18
18
  values = YAML.load_file(file)
19
- if base && values.has_key?(base)
20
- @configuration = values[base]
19
+ if !values.is_a?(Hash)
20
+ @configuration = {}
21
+ elsif base && values.has_key?(base)
22
+ @configuration = values[base] || {}
21
23
  else
22
24
  @configuration = values
23
25
  end
24
-
25
- @configuration ||= {}
26
26
  else
27
27
  raise Isomer::Error, "Missing required configuration file '#{file}'" if required
28
28
  @configuration = {}
@@ -1,3 +1,3 @@
1
1
  module Isomer
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -15,24 +15,52 @@ describe Isomer::Sources::Yaml do
15
15
  end
16
16
 
17
17
  describe '#load' do
18
- it 'loads the YAML file configuration file' do
19
- File.stub(:exists?).and_return(true)
20
- YAML.should_receive(:load_file).with('/home/configuration.yml').and_return({'foo' => 'bar'})
18
+ context 'when the file exists' do
19
+ context 'when the configuration values are a hash' do
20
+ it 'sets the configuration to the YAML file contents' do
21
+ File.stub(:exists?).and_return(true)
22
+ YAML.should_receive(:load_file).with('/home/configuration.yml').and_return({'foo' => 'bar'})
21
23
 
22
- source = Isomer::Sources::Yaml.new(anything, file: '/home/configuration.yml')
23
- source.load
24
+ source = Isomer::Sources::Yaml.new(anything, file: '/home/configuration.yml')
25
+ source.load
24
26
 
25
- source.configuration.should == {'foo' => 'bar'}
26
- end
27
+ source.configuration.should == {'foo' => 'bar'}
28
+ end
29
+ end
30
+
31
+ context 'when the configuration values are not a hash' do
32
+ it 'sets the configuration to an empty hash' do
33
+ File.stub(:exists?).and_return(true)
34
+ YAML.stub(:load_file).and_return('string value')
35
+
36
+ source = Isomer::Sources::Yaml.new(anything, file: 'anything.yml')
37
+ source.load
38
+
39
+ source.configuration.should == {}
40
+ end
41
+ end
42
+
43
+ context 'with a base' do
44
+ it 'returns the configuration under the base node' do
45
+ File.stub(:exists?).and_return(true)
46
+ YAML.stub(:load_file).and_return( 'production' => {'limit' => 100} )
27
47
 
28
- it 'returns an empty hash if the content is nil' do
29
- File.stub(:exists?).and_return(true)
30
- YAML.stub(:load_file).and_return(nil)
48
+ source = Isomer::Sources::Yaml.new(anything, file: 'filish.yml', base: 'production')
49
+ source.load
31
50
 
32
- source = Isomer::Sources::Yaml.new(anything, file: 'anything.yml')
33
- source.load
51
+ source.configuration.should == {'limit' => 100}
52
+ end
34
53
 
35
- source.configuration.should == {}
54
+ it 'returns an empty hash if the content is nil' do
55
+ File.stub(:exists?).and_return(true)
56
+ YAML.stub(:load_file).and_return( 'production' => nil )
57
+
58
+ source = Isomer::Sources::Yaml.new(anything, file: 'filish.yml', base: 'production')
59
+ source.load
60
+
61
+ source.configuration.should == {}
62
+ end
63
+ end
36
64
  end
37
65
 
38
66
  context 'when the file does not exist' do
@@ -58,27 +86,5 @@ describe Isomer::Sources::Yaml do
58
86
  end
59
87
  end
60
88
  end
61
-
62
- context 'with a base' do
63
- it 'returns the configuration under the base node' do
64
- File.stub(:exists?).and_return(true)
65
- YAML.stub(:load_file).and_return( 'production' => {'limit' => 100} )
66
-
67
- source = Isomer::Sources::Yaml.new(anything, file: 'filish.yml', base: 'production')
68
- source.load
69
-
70
- source.configuration.should == {'limit' => 100}
71
- end
72
-
73
- it 'returns an empty hash if the content is nil' do
74
- File.stub(:exists?).and_return(true)
75
- YAML.stub(:load_file).and_return( 'production' => nil )
76
-
77
- source = Isomer::Sources::Yaml.new(anything, file: 'filish.yml', base: 'production')
78
- source.load
79
-
80
- source.configuration.should == {}
81
- end
82
- end
83
89
  end
84
90
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  segments:
109
109
  - 0
110
- hash: 2295132044477336041
110
+ hash: -2110743002867033305
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  none: false
113
113
  requirements:
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  segments:
118
118
  - 0
119
- hash: 2295132044477336041
119
+ hash: -2110743002867033305
120
120
  requirements: []
121
121
  rubyforge_project:
122
122
  rubygems_version: 1.8.25