entity_rb 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7bff6f5f8be6d1ebe4dd9ce6e9c0c1e7b85bc91
4
- data.tar.gz: 27ec5d3ecb58c0fe859b708e362f0ae0e06895ad
3
+ metadata.gz: ec533ea6b4d05e089556b5907f4aa520371e4d82
4
+ data.tar.gz: 0eb195f2c53c5780694289c529bf132a0a587527
5
5
  SHA512:
6
- metadata.gz: ba4c4b78b169ad65f33eafc5920f4a18cb8aa608bd3ae66f5acd59a07ce3df6a9f15452205260218eba7d2f02a7259a2932fb650d682bba4d25989a27bca40d0
7
- data.tar.gz: b7a2c398e137a2e759547c96b82965fc4b624f037403536f3f7cb131b8853a04987188f3aa161b04227fc376a0d4b8df1fbb3dbcaa42d6f6ce9edbb827b5d5c6
6
+ metadata.gz: f897bab77f8ee4a7c8b282ad4dc5c917b03c55abfe67db2f7457b47031a11b487002306be58e1d3930928d9c0ef0be33baf78ff3d237c64d70a094bfac75ed85
7
+ data.tar.gz: 424551ccf13c235ae7f47cb186e7acaa12c72ad353983d89afc0c08b190fd4c217cca040b4878fe919b2d84618989e8c317248023c39944a0533c70cd8111812
data/entity_rb.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.2"
24
+ spec.add_development_dependency "pry-meta", "~> 0.0"
24
25
  end
@@ -1,11 +1,9 @@
1
1
  module Entity
2
2
  class Base
3
- def initialize(args={})
4
- attributes = {} unless args
3
+ attr_reader :attributes
5
4
 
6
- args.each do |key, value|
7
- send("#{key}=", value) if fields.include? key.to_sym
8
- end
5
+ def initialize(args={})
6
+ initialize_attributes(args || {})
9
7
 
10
8
  set_attributes(args)
11
9
  end
@@ -13,6 +11,16 @@ module Entity
13
11
  def set_attributes(args)
14
12
  end
15
13
 
14
+ def attributes=(args)
15
+ @attributes ||= {}
16
+
17
+ args.each do |key, value|
18
+ set_field(key, value)
19
+ end
20
+ end
21
+
22
+ alias initialize_attributes attributes=
23
+
16
24
  def to_h
17
25
  {}.tap do |hash|
18
26
  fields.each do |key|
@@ -21,7 +29,6 @@ module Entity
21
29
  end
22
30
  end
23
31
 
24
- alias attributes to_h
25
32
  alias to_hash to_h
26
33
 
27
34
  def self.fields
@@ -54,6 +61,15 @@ module Entity
54
61
  end
55
62
  end
56
63
 
64
+ def set_field(key, value)
65
+ key = key.to_sym
66
+
67
+ if fields.include? key
68
+ send("#{key}=", value)
69
+ @attributes[key] = value
70
+ end
71
+ end
72
+
57
73
  private
58
74
  def self.parent
59
75
  (respond_to?(:superclass) && superclass != Object) ? superclass : nil
@@ -1,3 +1,3 @@
1
1
  module Entity
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -257,4 +257,32 @@ describe Entity::Base do
257
257
  subject
258
258
  end
259
259
  end
260
+
261
+ describe '#attributes=' do
262
+ let(:new_attributes) { { field3: 'new field3', field5: 'ignored' } }
263
+ let(:instance) { Test.new }
264
+
265
+ before do
266
+ class Test < Entity::Base
267
+ field :field1
268
+ field :field2
269
+ field :field3
270
+ field :field4
271
+ end
272
+ end
273
+
274
+ subject { instance.attributes = new_attributes }
275
+
276
+ it "sets new value to field3" do
277
+ subject
278
+
279
+ expect(instance.field3).to eq 'new field3'
280
+ end
281
+
282
+ it "does not add field5 to the attributes" do
283
+ subject
284
+
285
+ expect(instance.attributes['field5']).to be_nil
286
+ end
287
+ end
260
288
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'pry'
2
+
1
3
  RSpec.configure do |config|
2
4
  config.order = :random
3
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entity_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Torres e Paulo Patto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-05 00:00:00.000000000 Z
11
+ date: 2016-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-meta
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.0'
55
69
  description: An Entity implementation in ruby to store all business logic from the
56
70
  (so called) model.
57
71
  email: