attr_hash_accessor 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,8 @@
1
+ ## 0.0.4 (Jun 26, 2013)
2
+
3
+ * raise ArgumentError unless constructor argument isn't Hash
4
+ * require all active_model files for support activemodel 4.0.0 *takkanm*
5
+
1
6
  ## 0.0.3 (Oct 17, 2012)
2
7
 
3
8
  * add `#attributes`, returns all filtered attributes *takkanm*
@@ -1,21 +1,31 @@
1
1
  require 'attr_hash_accessor/version'
2
2
 
3
- require 'active_model/naming'
4
- require 'active_model/conversion'
5
- require 'active_support/core_ext/object/blank'
3
+ require 'active_model'
6
4
  require 'active_support/hash_with_indifferent_access'
5
+ require 'active_support/core_ext/object/blank'
6
+
7
7
 
8
8
  module AttrHashAccessor
9
9
  include ActiveModel::Conversion
10
10
 
11
+ module Utils
12
+ extend self
13
+
14
+ def normalize_arg(val)
15
+ return {} unless val.present?
16
+ raise ArgumentError, 'argument should be a Hash' unless val.is_a?(Hash)
17
+
18
+ val.stringify_keys
19
+ end
20
+ end
21
+
11
22
  def self.included(base)
12
23
  base.extend ActiveModel::Naming
13
24
  base.extend ClassMethods
14
25
  end
15
26
 
16
27
  def initialize(val = nil)
17
- val = {} unless val.present?
18
- @attributes = self.class.default.stringify_keys.merge(val.stringify_keys)
28
+ @attributes = self.class.default.stringify_keys.merge(Utils.normalize_arg(val))
19
29
  end
20
30
 
21
31
  def attributes
@@ -1,3 +1,3 @@
1
1
  module AttrHashAccessor
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -33,6 +33,14 @@ describe AttrHashAccessor do
33
33
 
34
34
  its(:bar) { should == 'BARRR' }
35
35
  end
36
+
37
+ context 'wrong arguments' do
38
+ specify 'raise ArgumentError unless arg isnot a Hash' do
39
+ expect {
40
+ my_klass.new('STRING')
41
+ }.to raise_error ArgumentError
42
+ end
43
+ end
36
44
  end
37
45
 
38
46
  describe 'empty initialize' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr_hash_accessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-17 00:00:00.000000000 Z
12
+ date: 2013-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  segments:
109
109
  - 0
110
- hash: 175363436218142031
110
+ hash: 549606853183399214
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  none: false
113
113
  requirements:
@@ -116,10 +116,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  segments:
118
118
  - 0
119
- hash: 175363436218142031
119
+ hash: 549606853183399214
120
120
  requirements: []
121
121
  rubyforge_project:
122
- rubygems_version: 1.8.24
122
+ rubygems_version: 1.8.23
123
123
  signing_key:
124
124
  specification_version: 3
125
125
  summary: provides Hash based attribute accessor macro