object_attorney 2.5.9 → 2.6.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
- MDljMzMxODgxODg3MjU0NGFlMjlkZmQyN2Y4M2ZmODBkMGNlMDZlYw==
4
+ ZGFkZjIwNjQ2MzM4NmU5YTYxZGU3ODViMWIwNGM5YzY5NmVhYzVjOA==
5
5
  data.tar.gz: !binary |-
6
- Y2QzZTVlNzQ2OGJlYWFlYjM1ZDcxYTYyZTZkM2ZlYzJmMzJmNmJlYw==
6
+ NzIzNGI4MzI1ZmRlZGQxMTM2ZWQwNDk0ZWUzN2M0MTkwZGUwMDFiMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZThjMDNjMDVhMzIyYzI0ZDg0NjJmNzQ2N2NiZDVkNGI4ODE5NjgwYmY4ZDdh
10
- MzNiYWM1MzUwYWI4YWI3MGRiMjdhNjRmNzlkZDQ4NmU5ZWZjOTY1Yjg2Y2Q1
11
- MTQyMzEyYmQyZmI1M2FlYjFkZWNhNmNlOGY3ZTUxOTc1MWNmZmQ=
9
+ ZmQ5ZjQ5YTFhYjgzYmJiZTIyYjM0MzI1MjNmYjg0NmViYjk5MmJlMDYwMGRi
10
+ OGFjYmQ2MTNlZjUxMTIyNTJmOTgwODhiNGMyMWQ3ZmNhMDI3NmY2MGE0Y2Y4
11
+ ZjIzNjg2YzE1MjFhODdmM2VlM2ZlYWEzZWRiY2M5NTExN2U4NmI=
12
12
  data.tar.gz: !binary |-
13
- MjA5Nzg0MmNmNjVhMzRkZWQ0OTdjMWFjZTc0NmEwN2U0ZmEzZTg3NTc5Nzgw
14
- Zjg3ZWViMWEzMjhiMDZkNTcxNWYzMTBmY2JjNjY1ZjRlZDkxYmM0ZjBlNmVj
15
- Mjk2Y2Q4ZWNiYWE5NjBhY2I3YmJhZjliNDYyMWJkMzVhMGI4OTA=
13
+ MzY2M2JhOWFmNzM3NmM1MmU1ZDYzNTljMTliZWQwZTA0YWI2ODAzNDE3ZTQ1
14
+ ZjM0NDE5NDIwMzc2ZDU0MDM0NTgyNDUyYWRhZjBlMWYzYTk3YzA3NWNiYzhj
15
+ ZWU1NTc4YzJhY2M2Nzc3YmZlYzkwMmMxYmRjODIzOGE5N2Q0MDM=
@@ -29,6 +29,21 @@ module ObjectAttorney
29
29
  respond_to?("#{attribute}=")
30
30
  end
31
31
 
32
+ def attributes_without_destroy(attributes)
33
+ return nil unless attributes.is_a?(Hash)
34
+
35
+ _attributes = attributes.dup
36
+ _attributes.delete("_destroy")
37
+ _attributes.delete(:_destroy)
38
+
39
+ _attributes
40
+ end
41
+
42
+ def attributes_order_destruction?(attributes)
43
+ _destroy = attributes["_destroy"] || attributes[:_destroy]
44
+ ["true", "1", true].include?(_destroy)
45
+ end
46
+
32
47
  end
33
48
 
34
49
  end
@@ -20,9 +20,7 @@ module ObjectAttorney
20
20
  def mark_for_destruction_if_necessary(object, attributes)
21
21
  return nil unless attributes.is_a?(Hash)
22
22
 
23
- _destroy = attributes["_destroy"] || attributes[:_destroy]
24
-
25
- object.mark_for_destruction if ["true", "1", true].include?(_destroy)
23
+ object.mark_for_destruction if attributes_order_destruction? attributes
26
24
  end
27
25
 
28
26
  def nested_objects(macro = nil)
@@ -86,16 +84,6 @@ module ObjectAttorney
86
84
  end
87
85
  end
88
86
 
89
- def attributes_without_destroy(attributes)
90
- return nil unless attributes.is_a?(Hash)
91
-
92
- _attributes = attributes.dup
93
- _attributes.delete("_destroy")
94
- _attributes.delete(:_destroy)
95
-
96
- _attributes
97
- end
98
-
99
87
  def nested_getter(nested_object_name)
100
88
  nested_instance_variable = self.instance_variable_get("@#{nested_object_name}")
101
89
 
@@ -123,7 +111,7 @@ module ObjectAttorney
123
111
 
124
112
  nested_object.assign_attributes(attributes_without_destroy(attributes))
125
113
  mark_for_destruction_if_necessary(nested_object, attributes)
126
- elsif attributes.keys.present?
114
+ elsif attributes.keys.present? && !attributes_order_destruction?(attributes)
127
115
  nested_object = send("build_#{Helpers.singularize(nested_object_name)}", attributes_without_destroy(attributes))
128
116
  mark_for_destruction_if_necessary(nested_object, attributes)
129
117
  end
@@ -153,7 +141,7 @@ module ObjectAttorney
153
141
 
154
142
  def build_new_nested_objects(existing_and_new_nested_objects, nested_object_name)
155
143
  (send("#{nested_object_name}_attributes") || {}).values.each do |attributes|
156
- next if attributes["id"].present? || attributes[:id].present?
144
+ next if attributes["id"].present? || attributes[:id].present? || attributes_order_destruction?(attributes)
157
145
 
158
146
  new_nested_object = send("build_#{Helpers.singularize(nested_object_name)}", attributes_without_destroy(attributes))
159
147
  next unless new_nested_object
@@ -1,3 +1,3 @@
1
1
  module ObjectAttorney
2
- VERSION = "2.5.9"
2
+ VERSION = "2.6.0"
3
3
  end
@@ -122,6 +122,27 @@ shared_examples "a PostForm" do
122
122
  comment.body.should == 'new comment'
123
123
  end
124
124
 
125
+ it "5. Creating new 'Comment's and deleting them at the same time." do
126
+ params = {
127
+ id: 1,
128
+ post: {
129
+ title: "altered post",
130
+ comments_attributes: {
131
+ "0" => { body: '1', _destroy: true },
132
+ "1" => { body: '2' },
133
+ "2" => { body: '3', _destroy: true }
134
+ }
135
+ }
136
+ }
137
+
138
+ post_form = described_class.new(params[:post])
139
+
140
+ post_form.comments.length.should == 1
141
+ post_form.save.should == true
142
+ post_form.comments.length.should == 1
143
+ Comment.all.count.should == 1
144
+ end
145
+
125
146
  end
126
147
 
127
148
  describe PostForm::Base do
@@ -0,0 +1,15 @@
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
data/spec/spec_helper.rb CHANGED
@@ -28,6 +28,7 @@ require 'support/form_objects/bulk_posts_allow_only_existing_form'
28
28
  require 'support/form_objects/bulk_posts_allow_only_new_form'
29
29
  require 'support/form_objects/bulk_posts_with_form_objects_form'
30
30
  require 'support/form_objects/user_form'
31
+ require 'support/form_objects/user_form_with_ruby_errors'
31
32
 
32
33
  RSpec.configure do |config|
33
34
  #config.treat_symbols_as_metadata_keys_with_true_values = true
@@ -0,0 +1,15 @@
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
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.5.9
4
+ version: 2.6.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-01-13 00:00:00.000000000 Z
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,6 +98,7 @@ files:
98
98
  - spec/object_attorney/post_with_comment_validations_form_spec.rb
99
99
  - spec/object_attorney/post_with_comments_and_address_form_spec.rb
100
100
  - spec/object_attorney/user_form_spec.rb
101
+ - spec/object_attorney/user_form_with_ruby_errors_spec.rb
101
102
  - spec/spec_helper.rb
102
103
  - spec/support/active_model/validations.rb
103
104
  - spec/support/database_setup.rb
@@ -112,6 +113,7 @@ files:
112
113
  - spec/support/form_objects/post_with_comment_validations_form.rb
113
114
  - spec/support/form_objects/post_with_comments_and_address_form.rb
114
115
  - spec/support/form_objects/user_form.rb
116
+ - spec/support/form_objects/user_form_with_ruby_errors.rb
115
117
  - spec/support/models/address.rb
116
118
  - spec/support/models/comment.rb
117
119
  - spec/support/models/post.rb
@@ -153,6 +155,7 @@ test_files:
153
155
  - spec/object_attorney/post_with_comment_validations_form_spec.rb
154
156
  - spec/object_attorney/post_with_comments_and_address_form_spec.rb
155
157
  - spec/object_attorney/user_form_spec.rb
158
+ - spec/object_attorney/user_form_with_ruby_errors_spec.rb
156
159
  - spec/spec_helper.rb
157
160
  - spec/support/active_model/validations.rb
158
161
  - spec/support/database_setup.rb
@@ -167,8 +170,8 @@ test_files:
167
170
  - spec/support/form_objects/post_with_comment_validations_form.rb
168
171
  - spec/support/form_objects/post_with_comments_and_address_form.rb
169
172
  - spec/support/form_objects/user_form.rb
173
+ - spec/support/form_objects/user_form_with_ruby_errors.rb
170
174
  - spec/support/models/address.rb
171
175
  - spec/support/models/comment.rb
172
176
  - spec/support/models/post.rb
173
177
  - spec/support/models/user.rb
174
- has_rdoc: