object_attorney 2.8.1 → 2.9.0

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjBiYjY2NTJjZDkxMzdhMDE4OGExNzM2NGE5NDMzYjVmZmYwYjg2OA==
4
+ NTk2ZjBiODdlOGJlOGRjZDRkYTZkMjViZjllOThhYjgxMTBjYzYyMQ==
5
5
  data.tar.gz: !binary |-
6
- NjI5NDA4NGU4YjNkZTJjZTdjZWJkMDNiNjgwZmIxMmIwMzlkOGZlNQ==
6
+ NjdhYzlhNjJiZjYyZTkzZWI3MjkzMjViYzVjZGRkNDVmYTkxN2JlMg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzkxYmE0YTM3ZDdlZTJjZWQyMDQ3YThiZTE4MWNlZTM5NDg0MjhhOTllMjQ5
10
- YmZlZmRkMGNiY2I3Y2EzN2FhYzEyZmQ0MzY0OWE3ODMwYzg3NmZmZjYxMDYz
11
- MWRhNjk5ZDQ1NzczNWI4NWI1MTY5YWRmNzI0ODg2NjJlOGVmM2I=
9
+ NWE0YTk0N2FhNDZjOWJiYmU5ZDE0Mjg0ZWQwZWZkNDQ1ZTE5ZWQyMDRhM2E0
10
+ M2VhMWM2ODU2ZjI2ZWY3MTkxOWE3OWViOGNiM2ViNmQ4YTY5OTYyNjBmNDRj
11
+ NTQzYmNhMTcxOGY2YjZlNDc4ZDI5M2U1N2JiNTQwNmRhNmMwMDM=
12
12
  data.tar.gz: !binary |-
13
- ZTA5YWQwMzBhZjU5ZmVlNDQ0MmUyMjRlYTVjZmEzOTJjODk4YmZlZDcyZmQw
14
- MWZjYTk5MjQyNDk3OWFlZThmNGE3MjJlNjc0NjMyNmJiNDcwZTZhMWEzNTA3
15
- NzM0ZmRiMTBhN2YwM2Y3N2YwM2IxMGY0ODBhMTkxMGVjODAxODA=
13
+ MTNlZDEzMTUwMmViMjE4OTY3YzU3MjBjYTliM2Q1N2VjM2I3MTVmMzNiN2Fj
14
+ NTQwZDY2N2NiMjcwYmJlMDY1Y2JhNWJlOTk2ZDIxOThiYjY3MzIzZjJiMWQy
15
+ ZGJmZGVjNmVlMWYxMTkxNTUyMGY2YjhhN2M5M2IwYTU5NTBmMGE=
@@ -2,6 +2,14 @@ module ObjectAttorney
2
2
 
3
3
  module Delegation
4
4
 
5
+ module MissingMethods
6
+
7
+ def method_missing(method, *args, &block)
8
+ represented_object.send(method, *args, &block)
9
+ end
10
+
11
+ end
12
+
5
13
  def zuper_method(method_name, *args)
6
14
  self.superclass.send(method_name, *args) if self.superclass.respond_to?(method_name)
7
15
  end
@@ -28,12 +36,11 @@ module ObjectAttorney
28
36
 
29
37
  def delegate_getter(getter)
30
38
  delegate getter, to: :represented_object
31
- add_exposed_getters(getter)
39
+ add_exposed_data getter
32
40
  end
33
41
 
34
42
  def delegate_setter(setter)
35
43
  delegate "#{setter}=", to: :represented_object
36
- add_exposed_setters(setter)
37
44
  end
38
45
 
39
46
  end
@@ -2,15 +2,15 @@ module ObjectAttorney
2
2
 
3
3
  module ExposedData
4
4
 
5
- def exposed_data
6
- self.class.exposed_getters.reduce({}) do |data, getter|
5
+ def to_hash
6
+ self.class.exposed_data.reduce({}) do |data, getter|
7
7
  data[getter] = send(getter)
8
8
  data
9
9
  end
10
10
  end
11
11
 
12
12
  def to_json(options = {})
13
- exposed_data.to_json
13
+ to_hash.to_json
14
14
  end
15
15
 
16
16
  def self.included(base)
@@ -19,24 +19,16 @@ module ObjectAttorney
19
19
 
20
20
  module ClassMethods
21
21
 
22
- def exposed_getters
23
- return @exposed_getters if defined?(@exposed_getters)
22
+ def exposed_data
23
+ return @exposed_data if defined?(@exposed_data)
24
24
 
25
- @exposed_getters = zuper_method(:exposed_getters)
25
+ @exposed_data = zuper_method(:exposed_data)
26
26
 
27
- @exposed_getters ||= represented_object_class.present? && represented_object_class.method_defined?(:id) ? [:id] : []
27
+ @exposed_data ||= represented_object_class.present? && represented_object_class.method_defined?(:id) ? [:id] : []
28
28
  end
29
29
 
30
- def add_exposed_getters(*getters)
31
- exposed_getters.push(*getters) unless exposed_getters.include?(getters)
32
- end
33
-
34
- def exposed_setters
35
- @exposed_setters ||= (zuper_method(:exposed_setters) || [])
36
- end
37
-
38
- def add_exposed_setters(*setters)
39
- exposed_setters.push(*setters) unless exposed_setters.include?(setters)
30
+ def add_exposed_data(*getters)
31
+ exposed_data.push(*getters) unless exposed_data.include?(getters)
40
32
  end
41
33
 
42
34
  end
@@ -62,6 +62,8 @@ module ObjectAttorney
62
62
  properties(*options[:properties]) if options.include?(:properties)
63
63
  getters(*options[:getters]) if options.include?(:getters)
64
64
  setters(*options[:setters]) if options.include?(:setters)
65
+
66
+ class_eval { include Delegation::MissingMethods } if options[:delegate_missing_methods]
65
67
  end
66
68
 
67
69
  def represented_object_reflection
@@ -1,3 +1,3 @@
1
1
  module ObjectAttorney
2
- VERSION = "2.8.1"
2
+ VERSION = "2.9.0"
3
3
  end
@@ -1,5 +1,39 @@
1
1
  require "spec_helper"
2
2
 
3
+ describe PostForm::Presenter do
4
+
5
+ it "1. Editing a 'Post', through one property and delegating all missing methods to the represented object", current: true do
6
+ params = {
7
+ post: {
8
+ title: 'altered title',
9
+ body: 'altered body',
10
+ user_id: 666
11
+ }
12
+ }
13
+
14
+ post = Post.create({ title: 'First post', body: 'post body', user_id: 1 })
15
+
16
+ post_form = described_class.new(params[:post], post)
17
+
18
+ post_form.save.should == true
19
+
20
+ Post.all.count.should == 1
21
+ post = Post.first
22
+ post.title.should == 'altered title'
23
+ post.body.should == 'post body'
24
+ post.user_id.should == 1
25
+
26
+ post_form.title.should == 'altered title'
27
+ post_form.body.should == 'post body'
28
+ post_form.user_id.should == 1
29
+
30
+ post_form.user_id = 665
31
+ post_form.user_id.should == 665
32
+ end
33
+
34
+ end
35
+
36
+
3
37
  shared_examples "a PostForm with delegated properties" do
4
38
 
5
39
  it "1. Creating a 'Post' with 3 params, but only 2 are delegated" do
@@ -38,7 +72,9 @@ shared_examples "a PostForm with only delegated getters" do
38
72
  it "1. Editing a 'Post' with 3 params, no changes should take place but the getters should" do
39
73
  params = {
40
74
  post: {
41
- title: 'altered title', body: 'altered body', user_id: 666
75
+ title: 'altered title',
76
+ body: 'altered body',
77
+ user_id: 666
42
78
  }
43
79
  }
44
80
 
@@ -14,8 +14,7 @@ describe PostForm::GrandSon do
14
14
  post_form = described_class.new(params[:post], post)
15
15
 
16
16
  post_form.save.should == true
17
- described_class.exposed_getters.should == [:id, :title, :email, :author, :body, :date]
18
- described_class.exposed_setters.should == [:title, :user_id]
17
+ described_class.exposed_data.should == [:id, :title, :email, :author, :body, :date]
19
18
 
20
19
  Post.all.count.should == 1
21
20
  post = Post.first
@@ -35,7 +34,7 @@ describe PostForm::GrandSon do
35
34
 
36
35
  data = { id:1, title: "altered title", email: "test@gmail.com", author: "test", body: "post body", date: "20-10-2010" }
37
36
 
38
- post_form.exposed_data.should == data
37
+ post_form.to_hash.should == data
39
38
  post_form.to_json.should == data.to_json
40
39
  end
41
40
 
data/spec/spec_helper.rb CHANGED
@@ -30,7 +30,6 @@ require 'support/form_objects/bulk_posts_allow_only_existing_form'
30
30
  require 'support/form_objects/bulk_posts_allow_only_new_form'
31
31
  require 'support/form_objects/bulk_posts_with_form_objects_form'
32
32
  require 'support/form_objects/user_form'
33
- require 'support/form_objects/user_form_with_ruby_errors'
34
33
 
35
34
  RSpec.configure do |config|
36
35
  #config.treat_symbols_as_metadata_keys_with_true_values = true
@@ -50,6 +50,12 @@ module PostForm
50
50
  end
51
51
 
52
52
 
53
+ class Presenter
54
+ include ObjectAttorney
55
+ represents :post, delegate_missing_methods: true, properties: [:title]
56
+ end
57
+
58
+
53
59
  class Properties1
54
60
  include ObjectAttorney
55
61
  represents :post
@@ -94,7 +100,7 @@ module PostForm
94
100
  class Father < GrandFather
95
101
  properties :title
96
102
 
97
- add_exposed_getters :email, :author
103
+ add_exposed_data :email, :author
98
104
 
99
105
  attr_accessor :email, :author
100
106
  end
@@ -106,7 +112,7 @@ module PostForm
106
112
  class GrandSon < Son
107
113
  setters :user_id
108
114
 
109
- add_exposed_getters :date
115
+ add_exposed_data :date
110
116
 
111
117
  attr_accessor :date
112
118
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object_attorney
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - João Gonçalves
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-21 00:00:00.000000000 Z
11
+ date: 2014-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,7 +103,6 @@ files:
103
103
  - spec/object_attorney/post_with_only_existing_comments_form_spec.rb
104
104
  - spec/object_attorney/post_with_only_new_comments_form_spec.rb
105
105
  - spec/object_attorney/user_form_spec.rb
106
- - spec/object_attorney/user_form_with_ruby_errors_spec.rb
107
106
  - spec/spec_helper.rb
108
107
  - spec/support/active_model/validations.rb
109
108
  - spec/support/database_setup.rb
@@ -120,7 +119,6 @@ files:
120
119
  - spec/support/form_objects/post_with_only_existing_comments_form.rb
121
120
  - spec/support/form_objects/post_with_only_new_comments_form.rb
122
121
  - spec/support/form_objects/user_form.rb
123
- - spec/support/form_objects/user_form_with_ruby_errors.rb
124
122
  - spec/support/models/address.rb
125
123
  - spec/support/models/comment.rb
126
124
  - spec/support/models/post.rb
@@ -166,7 +164,6 @@ test_files:
166
164
  - spec/object_attorney/post_with_only_existing_comments_form_spec.rb
167
165
  - spec/object_attorney/post_with_only_new_comments_form_spec.rb
168
166
  - spec/object_attorney/user_form_spec.rb
169
- - spec/object_attorney/user_form_with_ruby_errors_spec.rb
170
167
  - spec/spec_helper.rb
171
168
  - spec/support/active_model/validations.rb
172
169
  - spec/support/database_setup.rb
@@ -183,7 +180,6 @@ test_files:
183
180
  - spec/support/form_objects/post_with_only_existing_comments_form.rb
184
181
  - spec/support/form_objects/post_with_only_new_comments_form.rb
185
182
  - spec/support/form_objects/user_form.rb
186
- - spec/support/form_objects/user_form_with_ruby_errors.rb
187
183
  - spec/support/models/address.rb
188
184
  - spec/support/models/comment.rb
189
185
  - spec/support/models/post.rb
@@ -1,15 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe UserFormWithRubyErrors do
4
-
5
- xit "1. 'UserFormWithRubyErrors' when saving should through an error!" do
6
- params = { user: { email: 'email@gmail.com', terms_of_service: true } }
7
-
8
- user_form = UserFormWithRubyErrors.new(params[:user])
9
- save_result = user_form.save
10
-
11
- save_result.should == true
12
- User.all.count.should == 1
13
- end
14
-
15
- end
@@ -1,15 +0,0 @@
1
- class UserFormWithRubyErrors
2
-
3
- include ObjectAttorney
4
-
5
- represents :user, properties: [:email]
6
-
7
- attr_accessor :terms_of_service
8
-
9
- validates_acceptance_of :terms_of_service, accept: true, allow_nil: false
10
-
11
- def submit
12
- fake_var == true
13
- end
14
-
15
- end