reform 2.2.4 → 2.3.1
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 +5 -5
- data/.gitignore +5 -1
- data/.rubocop.yml +30 -0
- data/.rubocop_todo.yml +460 -0
- data/.travis.yml +11 -6
- data/Appraisals +8 -0
- data/CHANGES.md +54 -4
- data/CONTRIBUTING.md +31 -0
- data/Gemfile +2 -16
- data/ISSUE_TEMPLATE.md +25 -0
- data/LICENSE.txt +1 -1
- data/README.md +5 -7
- data/Rakefile +18 -9
- data/gemfiles/0.13.0.gemfile +8 -0
- data/gemfiles/1.5.0.gemfile +9 -0
- data/lib/reform.rb +1 -0
- data/lib/reform/contract.rb +7 -17
- data/lib/reform/contract/custom_error.rb +41 -0
- data/lib/reform/contract/validate.rb +53 -23
- data/lib/reform/errors.rb +61 -0
- data/lib/reform/form.rb +36 -10
- data/lib/reform/form/call.rb +1 -1
- data/lib/reform/form/composition.rb +2 -2
- data/lib/reform/form/dry.rb +10 -58
- data/lib/reform/form/dry/input_hash.rb +37 -0
- data/lib/reform/form/dry/new_api.rb +46 -0
- data/lib/reform/form/dry/old_api.rb +61 -0
- data/lib/reform/form/populator.rb +11 -27
- data/lib/reform/form/prepopulate.rb +4 -3
- data/lib/reform/form/validate.rb +28 -13
- data/lib/reform/result.rb +90 -0
- data/lib/reform/validation.rb +19 -11
- data/lib/reform/validation/groups.rb +12 -27
- data/lib/reform/version.rb +1 -1
- data/reform.gemspec +15 -13
- data/test/benchmarking.rb +39 -6
- data/test/call_new_api.rb +23 -0
- data/test/{call_test.rb → call_old_api.rb} +4 -4
- data/test/changed_test.rb +8 -8
- data/test/coercion_test.rb +51 -19
- data/test/composition_new_api.rb +186 -0
- data/test/{composition_test.rb → composition_old_api.rb} +66 -31
- data/test/contract/custom_error_test.rb +55 -0
- data/test/contract_new_api.rb +77 -0
- data/test/{contract_test.rb → contract_old_api.rb} +13 -13
- data/test/default_test.rb +2 -2
- data/test/deserialize_test.rb +11 -14
- data/test/errors_new_api.rb +225 -0
- data/test/errors_old_api.rb +230 -0
- data/test/feature_test.rb +8 -10
- data/test/fixtures/dry_error_messages.yml +73 -23
- data/test/fixtures/dry_new_api_error_messages.yml +104 -0
- data/test/form_new_api.rb +57 -0
- data/test/{form_test.rb → form_old_api.rb} +5 -5
- data/test/form_option_new_api.rb +24 -0
- data/test/{form_option_test.rb → form_option_old_api.rb} +4 -4
- data/test/from_test.rb +9 -13
- data/test/inherit_new_api.rb +105 -0
- data/test/inherit_old_api.rb +105 -0
- data/test/{module_test.rb → module_new_api.rb} +20 -25
- data/test/module_old_api.rb +146 -0
- data/test/parse_option_test.rb +40 -0
- data/test/parse_pipeline_test.rb +3 -3
- data/test/populate_new_api.rb +304 -0
- data/test/{populate_test.rb → populate_old_api.rb} +83 -49
- data/test/populator_skip_test.rb +9 -9
- data/test/prepopulator_test.rb +8 -9
- data/test/read_only_test.rb +12 -1
- data/test/readable_test.rb +7 -7
- data/test/reform_new_api.rb +204 -0
- data/test/{reform_test.rb → reform_old_api.rb} +30 -51
- data/test/save_new_api.rb +101 -0
- data/test/{save_test.rb → save_old_api.rb} +32 -20
- data/test/setup_test.rb +8 -8
- data/test/{skip_if_test.rb → skip_if_new_api.rb} +23 -12
- data/test/skip_if_old_api.rb +92 -0
- data/test/skip_setter_and_getter_test.rb +3 -4
- data/test/test_helper.rb +25 -14
- data/test/validate_new_api.rb +408 -0
- data/test/{validate_test.rb → validate_old_api.rb} +59 -69
- data/test/validation/dry_validation_new_api.rb +836 -0
- data/test/validation/dry_validation_old_api.rb +772 -0
- data/test/validation/result_test.rb +77 -0
- data/test/validation_library_provided_test.rb +16 -0
- data/test/virtual_test.rb +47 -7
- data/test/writeable_test.rb +35 -6
- metadata +127 -56
- data/gemfiles/Gemfile.disposable-0.3 +0 -6
- data/lib/reform/contract/errors.rb +0 -43
- data/lib/reform/form/mongoid.rb +0 -37
- data/lib/reform/form/orm.rb +0 -26
- data/lib/reform/mongoid.rb +0 -4
- data/test/deprecation_test.rb +0 -27
- data/test/errors_test.rb +0 -165
- data/test/inherit_test.rb +0 -119
- data/test/readonly_test.rb +0 -14
- data/test/validation/dry_test.rb +0 -60
- data/test/validation/dry_validation_test.rb +0 -352
- data/test/validation/errors.yml +0 -4
@@ -0,0 +1,77 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ErrorsResultTest < Minitest::Spec
|
4
|
+
MyResult = Struct.new(:success?, :errors) do
|
5
|
+
def failure?; !success? end
|
6
|
+
end
|
7
|
+
|
8
|
+
# TODO: errors(args) not tested.
|
9
|
+
|
10
|
+
describe "Contract::Result#success?" do
|
11
|
+
let(:failed) { MyResult.new(false) }
|
12
|
+
let(:succeeded) { MyResult.new(true) }
|
13
|
+
|
14
|
+
it { Reform::Contract::Result.new([failed, failed]).success?.must_equal false }
|
15
|
+
it { Reform::Contract::Result.new([succeeded, failed]).success?.must_equal false }
|
16
|
+
it { Reform::Contract::Result.new([failed, succeeded]).success?.must_equal false }
|
17
|
+
it { Reform::Contract::Result.new([succeeded, succeeded]).success?.must_equal true }
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "Contract::Result#errors" do
|
21
|
+
let(:results) do
|
22
|
+
[
|
23
|
+
MyResult.new(false, {length: ["no Int"]}),
|
24
|
+
MyResult.new(false, {title: ["must be filled"], nested: {something: []}}),
|
25
|
+
MyResult.new(false, {title: ["must be filled"], nested: {something: []}}),
|
26
|
+
MyResult.new(false, {title: ["something more"], nested: {something: []}})
|
27
|
+
]
|
28
|
+
end
|
29
|
+
|
30
|
+
it { Reform::Contract::Result.new(results).errors.must_equal({title: ["must be filled", "something more"], length: ["no Int"]}) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "Result::Pointer" do
|
34
|
+
let(:errors) do # dry result #errors format.
|
35
|
+
{
|
36
|
+
title: ["ignore"],
|
37
|
+
artist: {age: ["too old"],
|
38
|
+
bands: {
|
39
|
+
0 => {name: "too new school"},
|
40
|
+
1 => {name: "too boring"},
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
let(:top) { Reform::Contract::Result::Pointer.new(MyResult.new(false, errors), []) }
|
47
|
+
it { top.success?.must_equal false }
|
48
|
+
it { top.errors.must_equal errors }
|
49
|
+
|
50
|
+
let(:artist) { Reform::Contract::Result::Pointer.new(MyResult.new(false, errors), [:artist]) }
|
51
|
+
it { artist.success?.must_equal false }
|
52
|
+
it { artist.errors.must_equal({age: ["too old"], bands: {0 => {name: "too new school"}, 1 => {name: "too boring"}}}) }
|
53
|
+
|
54
|
+
let(:band) { Reform::Contract::Result::Pointer.new(MyResult.new(false, errors), [:artist, :bands, 1]) }
|
55
|
+
it { band.success?.must_equal false }
|
56
|
+
it { band.errors.must_equal({name: "too boring"}) }
|
57
|
+
|
58
|
+
describe "advance" do
|
59
|
+
let(:advanced) { artist.advance(:bands, 1) }
|
60
|
+
|
61
|
+
it { advanced.success?.must_equal false }
|
62
|
+
it { advanced.errors.must_equal({name: "too boring"}) }
|
63
|
+
|
64
|
+
it { artist.advance(%i[absolute nonsense]).must_be_nil }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# validation group:
|
70
|
+
|
71
|
+
# form.errors/messages/hint(*args) ==> {:title: [..]}
|
72
|
+
# @call_result.errors/messages/hint(*args) }
|
73
|
+
|
74
|
+
# # result = Result(original_result => [:band, :label], my_local_result => [] )
|
75
|
+
# # result.messages(locale: :en) merges original_result and my_local_result
|
76
|
+
|
77
|
+
# form.errors => Result(fetch tree of all nested forms.messages(*args))
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "reform"
|
2
|
+
require "minitest/autorun"
|
3
|
+
|
4
|
+
class ValidationLibraryProvidedTest < MiniTest::Spec
|
5
|
+
it "no validation library loaded" do
|
6
|
+
assert_raises Reform::Validation::NoValidationLibraryError do
|
7
|
+
class PersonForm < Reform::Form
|
8
|
+
property :name
|
9
|
+
|
10
|
+
validation do
|
11
|
+
required(:name).maybe(:str?)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/test/virtual_test.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
|
-
require
|
1
|
+
require "test_helper"
|
2
2
|
|
3
3
|
class VirtualTest < MiniTest::Spec
|
4
|
-
class CreditCardForm <
|
4
|
+
class CreditCardForm < TestForm
|
5
5
|
property :credit_card_number, virtual: true # no read, no write, it's virtual.
|
6
|
+
collection :transactions, virtual: true, populate_if_empty: OpenStruct do
|
7
|
+
property :id
|
8
|
+
end
|
6
9
|
end
|
7
10
|
|
8
|
-
let
|
11
|
+
let(:form) { CreditCardForm.new(Object.new) }
|
9
12
|
|
10
13
|
it {
|
11
|
-
form.validate(
|
14
|
+
form.validate(credit_card_number: "123", transactions: [id: 1])
|
12
15
|
|
13
|
-
form.credit_card_number.must_equal "123"
|
16
|
+
form.credit_card_number.must_equal "123" # this is still readable in the UI.
|
17
|
+
form.transactions.first.id.must_equal 1 # this is still readable in the UI.
|
14
18
|
|
15
19
|
form.sync
|
16
20
|
|
@@ -19,6 +23,42 @@ class VirtualTest < MiniTest::Spec
|
|
19
23
|
hash = nested
|
20
24
|
end
|
21
25
|
|
22
|
-
hash.must_equal("credit_card_number"=> "123")
|
26
|
+
hash.must_equal("credit_card_number" => "123", "transactions" => ["id" => 1])
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
class VirtualAndDefaultTest < MiniTest::Spec
|
31
|
+
class CreditCardForm < TestForm
|
32
|
+
property :credit_card_number, virtual: true, default: "123" # no read, no write, it's virtual.
|
33
|
+
collection :transactions, virtual: true, populate_if_empty: OpenStruct, default: [OpenStruct.new(id: 2)] do
|
34
|
+
property :id
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def hash(form)
|
39
|
+
hash = {}
|
40
|
+
form.save do |nested|
|
41
|
+
hash = nested
|
42
|
+
end
|
43
|
+
hash
|
44
|
+
end
|
45
|
+
|
46
|
+
let(:form) { CreditCardForm.new(Object.new) }
|
47
|
+
|
48
|
+
it {
|
49
|
+
form = CreditCardForm.new(Object.new)
|
50
|
+
form.validate({})
|
51
|
+
|
52
|
+
hash(form).must_equal("credit_card_number" => "123", "transactions" => ["id" => 2])
|
53
|
+
|
54
|
+
form = CreditCardForm.new(Object.new)
|
55
|
+
form.validate(credit_card_number: "123", transactions: [id: 1])
|
56
|
+
|
57
|
+
form.credit_card_number.must_equal "123" # this is still readable in the UI.
|
58
|
+
form.transactions.first.id.must_equal 1 # this is still readable in the UI.
|
59
|
+
|
60
|
+
form.sync
|
61
|
+
|
62
|
+
hash(form).must_equal("credit_card_number" => "123", "transactions" => ["id" => 1])
|
23
63
|
}
|
24
|
-
end
|
64
|
+
end
|
data/test/writeable_test.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require "test_helper"
|
2
2
|
|
3
3
|
class WriteableTest < MiniTest::Spec
|
4
4
|
Location = Struct.new(:country)
|
5
5
|
|
6
|
-
class LocationForm <
|
6
|
+
class LocationForm < TestForm
|
7
7
|
property :country, writeable: false
|
8
8
|
end
|
9
9
|
|
10
|
-
let
|
11
|
-
let
|
10
|
+
let(:loc) { Location.new("Australia") }
|
11
|
+
let(:form) { LocationForm.new(loc) }
|
12
12
|
|
13
13
|
it do
|
14
14
|
form.country.must_equal "Australia"
|
@@ -24,6 +24,35 @@ class WriteableTest < MiniTest::Spec
|
|
24
24
|
hash = nested
|
25
25
|
end
|
26
26
|
|
27
|
-
hash.must_equal("country"=> "Germany")
|
27
|
+
hash.must_equal("country" => "Germany")
|
28
28
|
end
|
29
|
-
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# writable option is alias of writeable option.
|
32
|
+
class WritableTest < MiniTest::Spec
|
33
|
+
Location = Struct.new(:country)
|
34
|
+
|
35
|
+
class LocationForm < TestForm
|
36
|
+
property :country, writable: false
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:loc) { Location.new("Australia") }
|
40
|
+
let(:form) { LocationForm.new(loc) }
|
41
|
+
|
42
|
+
it do
|
43
|
+
form.country.must_equal "Australia"
|
44
|
+
|
45
|
+
form.validate("country" => "Germany") # this usually won't change when submitting.
|
46
|
+
form.country.must_equal "Germany"
|
47
|
+
|
48
|
+
form.sync
|
49
|
+
loc.country.must_equal "Australia" # the writer wasn't called.
|
50
|
+
|
51
|
+
hash = {}
|
52
|
+
form.save do |nested|
|
53
|
+
hash = nested
|
54
|
+
end
|
55
|
+
|
56
|
+
hash.must_equal("country" => "Germany")
|
57
|
+
end
|
58
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
|
-
-
|
8
|
+
- Fran Worley
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-05-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: disposable
|
@@ -17,14 +17,20 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.4.
|
20
|
+
version: 0.4.2
|
21
|
+
- - "<"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.5.0
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
28
|
- - ">="
|
26
29
|
- !ruby/object:Gem::Version
|
27
|
-
version: 0.4.
|
30
|
+
version: 0.4.2
|
31
|
+
- - "<"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.5.0
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: representable
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,6 +51,20 @@ dependencies:
|
|
45
51
|
- - "<"
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: 3.1.0
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: uber
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.2.0
|
61
|
+
type: :runtime
|
62
|
+
prerelease: false
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "<"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.2.0
|
48
68
|
- !ruby/object:Gem::Dependency
|
49
69
|
name: bundler
|
50
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,7 +80,7 @@ dependencies:
|
|
60
80
|
- !ruby/object:Gem::Version
|
61
81
|
version: '0'
|
62
82
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
83
|
+
name: minitest
|
64
84
|
requirement: !ruby/object:Gem::Requirement
|
65
85
|
requirements:
|
66
86
|
- - ">="
|
@@ -74,7 +94,7 @@ dependencies:
|
|
74
94
|
- !ruby/object:Gem::Version
|
75
95
|
version: '0'
|
76
96
|
- !ruby/object:Gem::Dependency
|
77
|
-
name: minitest
|
97
|
+
name: minitest-line
|
78
98
|
requirement: !ruby/object:Gem::Requirement
|
79
99
|
requirements:
|
80
100
|
- - ">="
|
@@ -88,7 +108,7 @@ dependencies:
|
|
88
108
|
- !ruby/object:Gem::Version
|
89
109
|
version: '0'
|
90
110
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
111
|
+
name: pry-byebug
|
92
112
|
requirement: !ruby/object:Gem::Requirement
|
93
113
|
requirements:
|
94
114
|
- - ">="
|
@@ -116,93 +136,130 @@ dependencies:
|
|
116
136
|
- !ruby/object:Gem::Version
|
117
137
|
version: '0'
|
118
138
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
139
|
+
name: rake
|
120
140
|
requirement: !ruby/object:Gem::Requirement
|
121
141
|
requirements:
|
122
142
|
- - ">="
|
123
143
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
144
|
+
version: '0'
|
125
145
|
type: :development
|
126
146
|
prerelease: false
|
127
147
|
version_requirements: !ruby/object:Gem::Requirement
|
128
148
|
requirements:
|
129
149
|
- - ">="
|
130
150
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0
|
151
|
+
version: '0'
|
152
|
+
- !ruby/object:Gem::Dependency
|
153
|
+
name: rubocop
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
type: :development
|
160
|
+
prerelease: false
|
161
|
+
version_requirements: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
132
166
|
description: Form object decoupled from models.
|
133
167
|
email:
|
134
168
|
- apotonick@gmail.com
|
135
|
-
-
|
169
|
+
- frances@safetytoolbox.co.uk
|
136
170
|
executables: []
|
137
171
|
extensions: []
|
138
172
|
extra_rdoc_files: []
|
139
173
|
files:
|
140
174
|
- ".gitignore"
|
175
|
+
- ".rubocop.yml"
|
176
|
+
- ".rubocop_todo.yml"
|
141
177
|
- ".travis.yml"
|
178
|
+
- Appraisals
|
142
179
|
- CHANGES.md
|
180
|
+
- CONTRIBUTING.md
|
143
181
|
- Gemfile
|
182
|
+
- ISSUE_TEMPLATE.md
|
144
183
|
- LICENSE.txt
|
145
184
|
- README.md
|
146
185
|
- Rakefile
|
147
186
|
- TODO.md
|
148
|
-
- gemfiles/
|
187
|
+
- gemfiles/0.13.0.gemfile
|
188
|
+
- gemfiles/1.5.0.gemfile
|
149
189
|
- lib/reform.rb
|
150
190
|
- lib/reform/contract.rb
|
151
|
-
- lib/reform/contract/
|
191
|
+
- lib/reform/contract/custom_error.rb
|
152
192
|
- lib/reform/contract/validate.rb
|
193
|
+
- lib/reform/errors.rb
|
153
194
|
- lib/reform/form.rb
|
154
195
|
- lib/reform/form/call.rb
|
155
196
|
- lib/reform/form/coercion.rb
|
156
197
|
- lib/reform/form/composition.rb
|
157
198
|
- lib/reform/form/dry.rb
|
199
|
+
- lib/reform/form/dry/input_hash.rb
|
200
|
+
- lib/reform/form/dry/new_api.rb
|
201
|
+
- lib/reform/form/dry/old_api.rb
|
158
202
|
- lib/reform/form/module.rb
|
159
|
-
- lib/reform/form/mongoid.rb
|
160
|
-
- lib/reform/form/orm.rb
|
161
203
|
- lib/reform/form/populator.rb
|
162
204
|
- lib/reform/form/prepopulate.rb
|
163
205
|
- lib/reform/form/validate.rb
|
164
|
-
- lib/reform/
|
206
|
+
- lib/reform/result.rb
|
165
207
|
- lib/reform/validation.rb
|
166
208
|
- lib/reform/validation/groups.rb
|
167
209
|
- lib/reform/version.rb
|
168
210
|
- reform.gemspec
|
169
211
|
- test/benchmarking.rb
|
170
|
-
- test/
|
212
|
+
- test/call_new_api.rb
|
213
|
+
- test/call_old_api.rb
|
171
214
|
- test/changed_test.rb
|
172
215
|
- test/coercion_test.rb
|
173
|
-
- test/
|
174
|
-
- test/
|
216
|
+
- test/composition_new_api.rb
|
217
|
+
- test/composition_old_api.rb
|
218
|
+
- test/contract/custom_error_test.rb
|
219
|
+
- test/contract_new_api.rb
|
220
|
+
- test/contract_old_api.rb
|
175
221
|
- test/default_test.rb
|
176
|
-
- test/deprecation_test.rb
|
177
222
|
- test/deserialize_test.rb
|
178
|
-
- test/
|
223
|
+
- test/errors_new_api.rb
|
224
|
+
- test/errors_old_api.rb
|
179
225
|
- test/feature_test.rb
|
180
226
|
- test/fixtures/dry_error_messages.yml
|
181
|
-
- test/
|
182
|
-
- test/
|
227
|
+
- test/fixtures/dry_new_api_error_messages.yml
|
228
|
+
- test/form_new_api.rb
|
229
|
+
- test/form_old_api.rb
|
230
|
+
- test/form_option_new_api.rb
|
231
|
+
- test/form_option_old_api.rb
|
183
232
|
- test/from_test.rb
|
184
|
-
- test/
|
185
|
-
- test/
|
233
|
+
- test/inherit_new_api.rb
|
234
|
+
- test/inherit_old_api.rb
|
235
|
+
- test/module_new_api.rb
|
236
|
+
- test/module_old_api.rb
|
237
|
+
- test/parse_option_test.rb
|
186
238
|
- test/parse_pipeline_test.rb
|
187
|
-
- test/
|
239
|
+
- test/populate_new_api.rb
|
240
|
+
- test/populate_old_api.rb
|
188
241
|
- test/populator_skip_test.rb
|
189
242
|
- test/prepopulator_test.rb
|
190
243
|
- test/read_only_test.rb
|
191
244
|
- test/readable_test.rb
|
192
|
-
- test/
|
193
|
-
- test/
|
194
|
-
- test/
|
245
|
+
- test/reform_new_api.rb
|
246
|
+
- test/reform_old_api.rb
|
247
|
+
- test/save_new_api.rb
|
248
|
+
- test/save_old_api.rb
|
195
249
|
- test/setup_test.rb
|
196
|
-
- test/
|
250
|
+
- test/skip_if_new_api.rb
|
251
|
+
- test/skip_if_old_api.rb
|
197
252
|
- test/skip_setter_and_getter_test.rb
|
198
253
|
- test/test_helper.rb
|
199
|
-
- test/
|
200
|
-
- test/
|
201
|
-
- test/validation/
|
202
|
-
- test/validation/
|
254
|
+
- test/validate_new_api.rb
|
255
|
+
- test/validate_old_api.rb
|
256
|
+
- test/validation/dry_validation_new_api.rb
|
257
|
+
- test/validation/dry_validation_old_api.rb
|
258
|
+
- test/validation/result_test.rb
|
259
|
+
- test/validation_library_provided_test.rb
|
203
260
|
- test/virtual_test.rb
|
204
261
|
- test/writeable_test.rb
|
205
|
-
homepage: https://github.com/
|
262
|
+
homepage: https://github.com/trailblazer/reform
|
206
263
|
licenses:
|
207
264
|
- MIT
|
208
265
|
metadata: {}
|
@@ -221,45 +278,59 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
278
|
- !ruby/object:Gem::Version
|
222
279
|
version: '0'
|
223
280
|
requirements: []
|
224
|
-
|
225
|
-
rubygems_version: 2.5.1
|
281
|
+
rubygems_version: 3.0.6
|
226
282
|
signing_key:
|
227
283
|
specification_version: 4
|
228
284
|
summary: Form object decoupled from models with validation, population and presentation.
|
229
285
|
test_files:
|
230
286
|
- test/benchmarking.rb
|
231
|
-
- test/
|
287
|
+
- test/call_new_api.rb
|
288
|
+
- test/call_old_api.rb
|
232
289
|
- test/changed_test.rb
|
233
290
|
- test/coercion_test.rb
|
234
|
-
- test/
|
235
|
-
- test/
|
291
|
+
- test/composition_new_api.rb
|
292
|
+
- test/composition_old_api.rb
|
293
|
+
- test/contract/custom_error_test.rb
|
294
|
+
- test/contract_new_api.rb
|
295
|
+
- test/contract_old_api.rb
|
236
296
|
- test/default_test.rb
|
237
|
-
- test/deprecation_test.rb
|
238
297
|
- test/deserialize_test.rb
|
239
|
-
- test/
|
298
|
+
- test/errors_new_api.rb
|
299
|
+
- test/errors_old_api.rb
|
240
300
|
- test/feature_test.rb
|
241
301
|
- test/fixtures/dry_error_messages.yml
|
242
|
-
- test/
|
243
|
-
- test/
|
302
|
+
- test/fixtures/dry_new_api_error_messages.yml
|
303
|
+
- test/form_new_api.rb
|
304
|
+
- test/form_old_api.rb
|
305
|
+
- test/form_option_new_api.rb
|
306
|
+
- test/form_option_old_api.rb
|
244
307
|
- test/from_test.rb
|
245
|
-
- test/
|
246
|
-
- test/
|
308
|
+
- test/inherit_new_api.rb
|
309
|
+
- test/inherit_old_api.rb
|
310
|
+
- test/module_new_api.rb
|
311
|
+
- test/module_old_api.rb
|
312
|
+
- test/parse_option_test.rb
|
247
313
|
- test/parse_pipeline_test.rb
|
248
|
-
- test/
|
314
|
+
- test/populate_new_api.rb
|
315
|
+
- test/populate_old_api.rb
|
249
316
|
- test/populator_skip_test.rb
|
250
317
|
- test/prepopulator_test.rb
|
251
318
|
- test/read_only_test.rb
|
252
319
|
- test/readable_test.rb
|
253
|
-
- test/
|
254
|
-
- test/
|
255
|
-
- test/
|
320
|
+
- test/reform_new_api.rb
|
321
|
+
- test/reform_old_api.rb
|
322
|
+
- test/save_new_api.rb
|
323
|
+
- test/save_old_api.rb
|
256
324
|
- test/setup_test.rb
|
257
|
-
- test/
|
325
|
+
- test/skip_if_new_api.rb
|
326
|
+
- test/skip_if_old_api.rb
|
258
327
|
- test/skip_setter_and_getter_test.rb
|
259
328
|
- test/test_helper.rb
|
260
|
-
- test/
|
261
|
-
- test/
|
262
|
-
- test/validation/
|
263
|
-
- test/validation/
|
329
|
+
- test/validate_new_api.rb
|
330
|
+
- test/validate_old_api.rb
|
331
|
+
- test/validation/dry_validation_new_api.rb
|
332
|
+
- test/validation/dry_validation_old_api.rb
|
333
|
+
- test/validation/result_test.rb
|
334
|
+
- test/validation_library_provided_test.rb
|
264
335
|
- test/virtual_test.rb
|
265
336
|
- test/writeable_test.rb
|