forminate 0.2.0 → 0.3.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 +4 -4
- data/forminate.gemspec +3 -3
- data/lib/forminate.rb +13 -6
- data/lib/forminate/version.rb +1 -1
- data/spec/forminate/association_definition_spec.rb +1 -1
- data/spec/forminate_spec.rb +48 -14
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 788144e945686f0d22aca012824b9e9ec934ddc6
|
4
|
+
data.tar.gz: 2c48c40dfe89785a48a8ad957cfa871e1d7939bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6366cdaa910762361b1fd368db1f6a17dbea84c36bc36e661bb86b96152d587f7237d3c77dc522096f17709524e8e435e37a7ec6cb6849880f77c199e9ebac7
|
7
|
+
data.tar.gz: eda25d9eb9d7f963b2f1b5ede5a01d904086e0625ee0ec061186313c2365d1b81e509238b6c47933d6152aa29a2e46d8765a4f67d914a63cc402d42ac3eae754
|
data/forminate.gemspec
CHANGED
@@ -23,12 +23,12 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'client_side_validations', '~> 3.2'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
|
-
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'rake', '~> 10.1'
|
27
27
|
spec.add_development_dependency 'rspec', '~> 2.11'
|
28
28
|
spec.add_development_dependency 'activerecord', '~> 3.2'
|
29
29
|
if defined?(JRUBY_VERSION)
|
30
|
-
spec.add_development_dependency 'activerecord-jdbcsqlite3-adapter'
|
30
|
+
spec.add_development_dependency 'activerecord-jdbcsqlite3-adapter', '~> 1.3'
|
31
31
|
else
|
32
|
-
spec.add_development_dependency 'sqlite3'
|
32
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3'
|
33
33
|
end
|
34
34
|
end
|
data/lib/forminate.rb
CHANGED
@@ -79,16 +79,19 @@ module Forminate
|
|
79
79
|
Hash[association_names.map { |name| [name, send(name)] }]
|
80
80
|
end
|
81
81
|
|
82
|
-
def save
|
82
|
+
def save!
|
83
83
|
return false unless valid?
|
84
|
-
|
85
84
|
before_save
|
86
|
-
|
87
|
-
|
85
|
+
persist_associations
|
86
|
+
self
|
87
|
+
end
|
88
|
+
|
89
|
+
def save
|
90
|
+
if use_transaction?
|
91
|
+
ActiveRecord::Base.transaction { save! }
|
88
92
|
else
|
89
|
-
|
93
|
+
save!
|
90
94
|
end
|
91
|
-
self
|
92
95
|
end
|
93
96
|
|
94
97
|
def before_save
|
@@ -153,4 +156,8 @@ module Forminate
|
|
153
156
|
assoc = send(assoc_name)
|
154
157
|
return assoc, assoc_method_name
|
155
158
|
end
|
159
|
+
|
160
|
+
def use_transaction?
|
161
|
+
defined?(ActiveRecord)
|
162
|
+
end
|
156
163
|
end
|
data/lib/forminate/version.rb
CHANGED
@@ -14,7 +14,7 @@ describe Forminate::AssociationDefinition do
|
|
14
14
|
describe '#validation_condition' do
|
15
15
|
context 'options hash does not contain :validate key' do
|
16
16
|
it 'returns true' do
|
17
|
-
expect(subject.validation_condition).to
|
17
|
+
expect(subject.validation_condition).to be true
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
data/spec/forminate_spec.rb
CHANGED
@@ -32,7 +32,7 @@ describe Forminate do
|
|
32
32
|
|
33
33
|
describe '.attributes_for' do
|
34
34
|
it 'adds a reader method for each attribute of the associated model' do
|
35
|
-
expect(model.respond_to?(:dummy_user_first_name)).to
|
35
|
+
expect(model.respond_to?(:dummy_user_first_name)).to be true
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'adds reader and writer methods for each attribute of the associated model' do
|
@@ -52,9 +52,9 @@ describe Forminate do
|
|
52
52
|
context 'true or false' do
|
53
53
|
it 'validates associated object based value given' do
|
54
54
|
model.calculate_total
|
55
|
-
expect(model.valid?).to
|
55
|
+
expect(model.valid?).to be false
|
56
56
|
model.dummy_user_email = 'bob@example.com'
|
57
|
-
expect(model.valid?).to
|
57
|
+
expect(model.valid?).to be true
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -62,11 +62,11 @@ describe Forminate do
|
|
62
62
|
it 'validates associated objects based on result of method call' do
|
63
63
|
model.calculate_total
|
64
64
|
model.dummy_user_email = 'bob@example.com'
|
65
|
-
expect(model.valid?).to
|
65
|
+
expect(model.valid?).to be true
|
66
66
|
model.dummy_book_price = 12.95
|
67
|
-
expect(model.valid?).to
|
67
|
+
expect(model.valid?).to be false
|
68
68
|
model.dummy_credit_card_number = 4242424242424242
|
69
|
-
expect(model.valid?).to
|
69
|
+
expect(model.valid?).to be true
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -175,21 +175,55 @@ describe Forminate do
|
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
178
|
-
|
178
|
+
shared_examples 'a save method' do
|
179
179
|
context 'object is valid' do
|
180
|
-
|
180
|
+
before do
|
181
181
|
model.dummy_user_email = 'bob@example.com'
|
182
182
|
model.calculate_total
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'persists associations and returns self' do
|
183
186
|
DummyUser.any_instance.should_receive(:save)
|
184
|
-
expect(
|
187
|
+
expect(method).to eq(model)
|
185
188
|
end
|
186
189
|
end
|
187
190
|
|
188
|
-
context 'object is
|
189
|
-
it 'does not
|
191
|
+
context 'object is invalid' do
|
192
|
+
it 'does not persist associations and returns false' do
|
190
193
|
DummyUser.any_instance.should_not_receive(:save)
|
191
|
-
expect(
|
194
|
+
expect(method).to be false
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
describe '#save!' do
|
200
|
+
let(:method) { model.save! }
|
201
|
+
it_behaves_like 'a save method'
|
202
|
+
end
|
203
|
+
|
204
|
+
describe '#save' do
|
205
|
+
let(:method) { model.save }
|
206
|
+
|
207
|
+
context 'with ActiveRecord defined' do
|
208
|
+
before { model.stub(:use_transaction?).and_return(true) }
|
209
|
+
|
210
|
+
it 'wraps persistence in a transaction' do
|
211
|
+
ActiveRecord::Base.should_receive(:transaction).once
|
212
|
+
model.save
|
192
213
|
end
|
214
|
+
|
215
|
+
it_behaves_like 'a save method'
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'without ActiveRecord defined' do
|
219
|
+
before { model.stub(:use_transaction?).and_return(false) }
|
220
|
+
|
221
|
+
it 'does not wrap persistence in a transaction' do
|
222
|
+
ActiveRecord::Base.should_not_receive(:transaction)
|
223
|
+
model.save
|
224
|
+
end
|
225
|
+
|
226
|
+
it_behaves_like 'a save method'
|
193
227
|
end
|
194
228
|
end
|
195
229
|
|
@@ -225,13 +259,13 @@ describe Forminate do
|
|
225
259
|
describe '#respond_to_missing?' do
|
226
260
|
context 'associated object responds to method' do
|
227
261
|
it 'returns true' do
|
228
|
-
expect(model.respond_to?(:dummy_user_temporary_note)).to
|
262
|
+
expect(model.respond_to?(:dummy_user_temporary_note)).to be true
|
229
263
|
end
|
230
264
|
end
|
231
265
|
|
232
266
|
context 'associated object does not respond to method' do
|
233
267
|
it 'returns false' do
|
234
|
-
expect(model.respond_to?(:dummy_user_bogus_method)).to
|
268
|
+
expect(model.respond_to?(:dummy_user_bogus_method)).to be false
|
235
269
|
end
|
236
270
|
end
|
237
271
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forminate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mo Lawson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_attr
|
@@ -76,16 +76,16 @@ dependencies:
|
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '10.1'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '10.1'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rspec
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,16 +118,16 @@ dependencies:
|
|
118
118
|
name: sqlite3
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- - "
|
121
|
+
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '
|
123
|
+
version: '1.3'
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- - "
|
128
|
+
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
130
|
+
version: '1.3'
|
131
131
|
description: Form objects for Rails applications
|
132
132
|
email:
|
133
133
|
- mo@molawson.com
|
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
176
|
version: '0'
|
177
177
|
requirements: []
|
178
178
|
rubyforge_project:
|
179
|
-
rubygems_version: 2.
|
179
|
+
rubygems_version: 2.4.2
|
180
180
|
signing_key:
|
181
181
|
specification_version: 4
|
182
182
|
summary: Create form objects from multiple Active Record and/or ActiveAttr models.
|