bound 0.0.8 → 0.0.9

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d49b1e7d8ae733c85d4adc9745275673ee409ff6
4
- data.tar.gz: 16d268a92eda75a87f4cc0e144866aed12eed7d6
3
+ metadata.gz: 46590308f9cc175507cdd528e744b43d72013d82
4
+ data.tar.gz: b98915c9a3be4b1a1fe2895862ae4987c83c2fcf
5
5
  SHA512:
6
- metadata.gz: af6cb0fee682b4e6a1b0245d4e8da571e05585c1d2b14f6a4c61c161a186a4a099d8aa0497ca86a5141aca35d3e58da6a8d09b6a8b611500e2c356c22821ef0b
7
- data.tar.gz: 048b801aeae0fd2bc5b99ef9225bbdaef12f8510f3ca37828aebb358944ce0e9a9bed7cf5f58921aa8cc44fb7e283043184d3e092fd30a05a7d2ac318de23177
6
+ metadata.gz: 1d58eb39f202864c80d0e0edf7b32ba15b1d45cdb7c3ca6f61a2f880b4b21890677fc21e98b72edfedd1ba8ff703690b252374dfd7ef891f8d2350bc0f21358b
7
+ data.tar.gz: f934f47ce58bad2dd8cddea11877fba384a24112e152bab5b447788707ee66d9d8efb64b6bcb9a2c637cc59f8d8c349e8c07def4bb4bb68d7cd3095a6fb1f9b8
@@ -58,7 +58,7 @@ class Bound
58
58
  self.nested_attributes += attributes
59
59
  self.attributes += attributes
60
60
  attr_reader *attributes
61
-
61
+
62
62
  attributes.each do |attribute|
63
63
  define_method :"#{attribute}=" do |initial_values|
64
64
  nested_target = nested_attributes[attribute]
@@ -79,6 +79,10 @@ class Bound
79
79
  validate!
80
80
  seed
81
81
  end
82
+
83
+ def __attributes__
84
+ self.class.attributes + self.class.optional_attributes
85
+ end
82
86
 
83
87
  def method_missing(meth, *args, &blk)
84
88
  attribute = meth.to_s.gsub(/=$/, '')
@@ -1,3 +1,3 @@
1
1
  class Bound
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -55,6 +55,14 @@ describe Bound do
55
55
  assert_match(/unknown.+gender/i, exception.message)
56
56
  end
57
57
 
58
+ it 'exposes an attributes method' do
59
+ user = User.build(hash)
60
+
61
+ assert_equal 2, user.__attributes__.size
62
+ assert_includes user.__attributes__, :name
63
+ assert_includes user.__attributes__, :age
64
+ end
65
+
58
66
  describe 'wrong initialization' do
59
67
  it 'fails if new is not called with symbols' do
60
68
  assert_raises ArgumentError do
@@ -111,6 +119,14 @@ describe Bound do
111
119
  UserWithoutAge.build(subject)
112
120
  end
113
121
  end
122
+
123
+ it 'are also included in attributes' do
124
+ user = UserWithoutAge.build(hash)
125
+
126
+ assert_equal 2, user.__attributes__.size
127
+ assert_includes user.__attributes__, :name
128
+ assert_includes user.__attributes__, :age
129
+ end
114
130
  end
115
131
 
116
132
  describe 'no attributes' do
@@ -149,12 +165,12 @@ describe Bound do
149
165
  BloggingUser = Bound.new(:name).nested(:posts => [Post])
150
166
  let(:hash) do
151
167
  {
152
- :name => 'Steve',
168
+ :name => 'Steve',
153
169
  :posts => [
154
170
  {:title => 'It is christmas'},
155
171
  {:title => 'NOT'}
156
172
  ]
157
- }
173
+ }
158
174
  end
159
175
 
160
176
  it 'works with array of nested attributes' do
@@ -179,6 +195,14 @@ describe Bound do
179
195
  end
180
196
 
181
197
  end
198
+
199
+ it 'are also included in attributes' do
200
+ user = BloggingUser.build(hash)
201
+
202
+ assert_equal 2, user.__attributes__.size
203
+ assert_includes user.__attributes__, :name
204
+ assert_includes user.__attributes__, :posts
205
+ end
182
206
  end
183
207
 
184
208
  describe 'allows optional as constructor' do
@@ -198,4 +222,4 @@ describe Bound do
198
222
  assert_equal "VW", Car.new(:producer => {:name => 'VW'}).producer.name
199
223
  end
200
224
  end
201
- end
225
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bound
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakob Holderbaum
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-22 00:00:00.000000000 Z
12
+ date: 2013-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  version: '0'
93
93
  requirements: []
94
94
  rubyforge_project:
95
- rubygems_version: 2.0.3
95
+ rubygems_version: 2.0.0
96
96
  signing_key:
97
97
  specification_version: 4
98
98
  summary: Implements a nice helper for fast boundary definitions