setsumei 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,23 +11,30 @@ module Setsumei
11
11
  attr_accessor :klass, :options
12
12
 
13
13
  def set_value_on(object, options = {})
14
- return nil if options.empty?
14
+ return nil if options.empty? || options[:from_value_in].empty?
15
15
 
16
- Array( extract_from_hash options[:from_value_in] ).each do |data|
16
+ array( extract_from_hash options[:from_value_in] ).each do |data|
17
17
  object << Build.a(klass, from: data)
18
18
  end
19
19
  end
20
20
 
21
21
  private
22
+ def array(thing)
23
+ [thing].flatten(1).compact
24
+ end
22
25
  def extract_from_hash(hash)
23
26
  hash[ extract_key_for hash ]
24
27
  end
25
28
  def extract_key_for(hash)
26
- Build::Key.for configured_key, given: hash.keys
29
+ Build::Key.for configured_key, given: hash_keys(hash)
27
30
  end
28
31
  def configured_key
29
32
  options[:within] || klass
30
33
  end
34
+ def hash_keys(hash)
35
+ ( hash && hash.keys ) || []
36
+ end
37
+
31
38
  end
32
39
  end
33
40
  end
@@ -1,3 +1,3 @@
1
1
  module Setsumei
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -46,6 +46,11 @@ module Setsumei
46
46
 
47
47
  context "nil value" do
48
48
  specify { collection.set_value_on(object).should be_nil }
49
+ it "should protect against instances where there are attributes, but not for our defined element keys" do
50
+ hash = { from_value_in: {"@size"=>"0"} }
51
+ object.should_not_receive(:<<)
52
+ collection.set_value_on(object,hash)
53
+ end
49
54
  end
50
55
 
51
56
  context "single value" do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: setsumei
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jon Rowe