reform 2.2.4 → 2.3.3
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/.travis.yml +11 -6
- data/Appraisals +8 -0
- data/CHANGES.md +57 -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 +16 -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 +45 -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 +14 -13
- data/test/benchmarking.rb +39 -6
- data/test/call_new_api.rb +23 -0
- data/test/call_old_api.rb +23 -0
- data/test/changed_test.rb +14 -14
- data/test/coercion_test.rb +57 -25
- data/test/composition_new_api.rb +186 -0
- data/test/composition_old_api.rb +184 -0
- data/test/contract/custom_error_test.rb +55 -0
- data/test/contract_new_api.rb +77 -0
- data/test/contract_old_api.rb +77 -0
- data/test/default_test.rb +4 -4
- data/test/deserialize_test.rb +17 -20
- data/test/errors_new_api.rb +225 -0
- data/test/errors_old_api.rb +230 -0
- data/test/feature_test.rb +10 -12
- 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} +8 -8
- data/test/form_option_new_api.rb +24 -0
- data/test/{form_option_test.rb → form_option_old_api.rb} +5 -5
- data/test/from_test.rb +18 -22
- 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} +26 -31
- data/test/module_old_api.rb +146 -0
- data/test/parse_option_test.rb +40 -0
- data/test/parse_pipeline_test.rb +4 -4
- data/test/populate_new_api.rb +304 -0
- data/test/populate_old_api.rb +304 -0
- data/test/populator_skip_test.rb +11 -11
- data/test/prepopulator_test.rb +23 -24
- data/test/read_only_test.rb +12 -1
- data/test/readable_test.rb +9 -9
- data/test/reform_new_api.rb +204 -0
- data/test/{reform_test.rb → reform_old_api.rb} +44 -65
- data/test/save_new_api.rb +101 -0
- data/test/save_old_api.rb +101 -0
- data/test/setup_test.rb +17 -17
- data/test/skip_if_new_api.rb +85 -0
- data/test/skip_if_old_api.rb +92 -0
- data/test/skip_setter_and_getter_test.rb +9 -10
- data/test/test_helper.rb +25 -14
- data/test/validate_new_api.rb +453 -0
- data/test/{validate_test.rb → validate_old_api.rb} +121 -131
- data/test/validation/dry_validation_new_api.rb +835 -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 +38 -9
- metadata +111 -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/call_test.rb +0 -23
- data/test/composition_test.rb +0 -149
- data/test/contract_test.rb +0 -77
- data/test/deprecation_test.rb +0 -27
- data/test/errors_test.rb +0 -165
- data/test/inherit_test.rb +0 -119
- data/test/populate_test.rb +0 -270
- data/test/readonly_test.rb +0 -14
- data/test/save_test.rb +0 -89
- data/test/skip_if_test.rb +0 -74
- 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,29 +1,58 @@
|
|
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
|
-
form.country.must_equal "Australia"
|
14
|
+
_(form.country).must_equal "Australia"
|
15
15
|
|
16
16
|
form.validate("country" => "Germany") # this usually won't change when submitting.
|
17
|
-
form.country.must_equal "Germany"
|
17
|
+
_(form.country).must_equal "Germany"
|
18
18
|
|
19
19
|
form.sync
|
20
|
-
loc.country.must_equal "Australia" # the writer wasn't called.
|
20
|
+
_(loc.country).must_equal "Australia" # the writer wasn't called.
|
21
21
|
|
22
22
|
hash = {}
|
23
23
|
form.save do |nested|
|
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.3
|
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-07-09 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,114 @@ 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'
|
132
152
|
description: Form object decoupled from models.
|
133
153
|
email:
|
134
154
|
- apotonick@gmail.com
|
135
|
-
-
|
155
|
+
- frances@safetytoolbox.co.uk
|
136
156
|
executables: []
|
137
157
|
extensions: []
|
138
158
|
extra_rdoc_files: []
|
139
159
|
files:
|
140
160
|
- ".gitignore"
|
141
161
|
- ".travis.yml"
|
162
|
+
- Appraisals
|
142
163
|
- CHANGES.md
|
164
|
+
- CONTRIBUTING.md
|
143
165
|
- Gemfile
|
166
|
+
- ISSUE_TEMPLATE.md
|
144
167
|
- LICENSE.txt
|
145
168
|
- README.md
|
146
169
|
- Rakefile
|
147
170
|
- TODO.md
|
148
|
-
- gemfiles/
|
171
|
+
- gemfiles/0.13.0.gemfile
|
172
|
+
- gemfiles/1.5.0.gemfile
|
149
173
|
- lib/reform.rb
|
150
174
|
- lib/reform/contract.rb
|
151
|
-
- lib/reform/contract/
|
175
|
+
- lib/reform/contract/custom_error.rb
|
152
176
|
- lib/reform/contract/validate.rb
|
177
|
+
- lib/reform/errors.rb
|
153
178
|
- lib/reform/form.rb
|
154
179
|
- lib/reform/form/call.rb
|
155
180
|
- lib/reform/form/coercion.rb
|
156
181
|
- lib/reform/form/composition.rb
|
157
182
|
- lib/reform/form/dry.rb
|
183
|
+
- lib/reform/form/dry/input_hash.rb
|
184
|
+
- lib/reform/form/dry/new_api.rb
|
185
|
+
- lib/reform/form/dry/old_api.rb
|
158
186
|
- lib/reform/form/module.rb
|
159
|
-
- lib/reform/form/mongoid.rb
|
160
|
-
- lib/reform/form/orm.rb
|
161
187
|
- lib/reform/form/populator.rb
|
162
188
|
- lib/reform/form/prepopulate.rb
|
163
189
|
- lib/reform/form/validate.rb
|
164
|
-
- lib/reform/
|
190
|
+
- lib/reform/result.rb
|
165
191
|
- lib/reform/validation.rb
|
166
192
|
- lib/reform/validation/groups.rb
|
167
193
|
- lib/reform/version.rb
|
168
194
|
- reform.gemspec
|
169
195
|
- test/benchmarking.rb
|
170
|
-
- test/
|
196
|
+
- test/call_new_api.rb
|
197
|
+
- test/call_old_api.rb
|
171
198
|
- test/changed_test.rb
|
172
199
|
- test/coercion_test.rb
|
173
|
-
- test/
|
174
|
-
- test/
|
200
|
+
- test/composition_new_api.rb
|
201
|
+
- test/composition_old_api.rb
|
202
|
+
- test/contract/custom_error_test.rb
|
203
|
+
- test/contract_new_api.rb
|
204
|
+
- test/contract_old_api.rb
|
175
205
|
- test/default_test.rb
|
176
|
-
- test/deprecation_test.rb
|
177
206
|
- test/deserialize_test.rb
|
178
|
-
- test/
|
207
|
+
- test/errors_new_api.rb
|
208
|
+
- test/errors_old_api.rb
|
179
209
|
- test/feature_test.rb
|
180
210
|
- test/fixtures/dry_error_messages.yml
|
181
|
-
- test/
|
182
|
-
- test/
|
211
|
+
- test/fixtures/dry_new_api_error_messages.yml
|
212
|
+
- test/form_new_api.rb
|
213
|
+
- test/form_old_api.rb
|
214
|
+
- test/form_option_new_api.rb
|
215
|
+
- test/form_option_old_api.rb
|
183
216
|
- test/from_test.rb
|
184
|
-
- test/
|
185
|
-
- test/
|
217
|
+
- test/inherit_new_api.rb
|
218
|
+
- test/inherit_old_api.rb
|
219
|
+
- test/module_new_api.rb
|
220
|
+
- test/module_old_api.rb
|
221
|
+
- test/parse_option_test.rb
|
186
222
|
- test/parse_pipeline_test.rb
|
187
|
-
- test/
|
223
|
+
- test/populate_new_api.rb
|
224
|
+
- test/populate_old_api.rb
|
188
225
|
- test/populator_skip_test.rb
|
189
226
|
- test/prepopulator_test.rb
|
190
227
|
- test/read_only_test.rb
|
191
228
|
- test/readable_test.rb
|
192
|
-
- test/
|
193
|
-
- test/
|
194
|
-
- test/
|
229
|
+
- test/reform_new_api.rb
|
230
|
+
- test/reform_old_api.rb
|
231
|
+
- test/save_new_api.rb
|
232
|
+
- test/save_old_api.rb
|
195
233
|
- test/setup_test.rb
|
196
|
-
- test/
|
234
|
+
- test/skip_if_new_api.rb
|
235
|
+
- test/skip_if_old_api.rb
|
197
236
|
- test/skip_setter_and_getter_test.rb
|
198
237
|
- test/test_helper.rb
|
199
|
-
- test/
|
200
|
-
- test/
|
201
|
-
- test/validation/
|
202
|
-
- test/validation/
|
238
|
+
- test/validate_new_api.rb
|
239
|
+
- test/validate_old_api.rb
|
240
|
+
- test/validation/dry_validation_new_api.rb
|
241
|
+
- test/validation/dry_validation_old_api.rb
|
242
|
+
- test/validation/result_test.rb
|
243
|
+
- test/validation_library_provided_test.rb
|
203
244
|
- test/virtual_test.rb
|
204
245
|
- test/writeable_test.rb
|
205
|
-
homepage: https://github.com/
|
246
|
+
homepage: https://github.com/trailblazer/reform
|
206
247
|
licenses:
|
207
248
|
- MIT
|
208
249
|
metadata: {}
|
@@ -221,45 +262,59 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
262
|
- !ruby/object:Gem::Version
|
222
263
|
version: '0'
|
223
264
|
requirements: []
|
224
|
-
|
225
|
-
rubygems_version: 2.5.1
|
265
|
+
rubygems_version: 3.0.3
|
226
266
|
signing_key:
|
227
267
|
specification_version: 4
|
228
268
|
summary: Form object decoupled from models with validation, population and presentation.
|
229
269
|
test_files:
|
230
270
|
- test/benchmarking.rb
|
231
|
-
- test/
|
271
|
+
- test/call_new_api.rb
|
272
|
+
- test/call_old_api.rb
|
232
273
|
- test/changed_test.rb
|
233
274
|
- test/coercion_test.rb
|
234
|
-
- test/
|
235
|
-
- test/
|
275
|
+
- test/composition_new_api.rb
|
276
|
+
- test/composition_old_api.rb
|
277
|
+
- test/contract/custom_error_test.rb
|
278
|
+
- test/contract_new_api.rb
|
279
|
+
- test/contract_old_api.rb
|
236
280
|
- test/default_test.rb
|
237
|
-
- test/deprecation_test.rb
|
238
281
|
- test/deserialize_test.rb
|
239
|
-
- test/
|
282
|
+
- test/errors_new_api.rb
|
283
|
+
- test/errors_old_api.rb
|
240
284
|
- test/feature_test.rb
|
241
285
|
- test/fixtures/dry_error_messages.yml
|
242
|
-
- test/
|
243
|
-
- test/
|
286
|
+
- test/fixtures/dry_new_api_error_messages.yml
|
287
|
+
- test/form_new_api.rb
|
288
|
+
- test/form_old_api.rb
|
289
|
+
- test/form_option_new_api.rb
|
290
|
+
- test/form_option_old_api.rb
|
244
291
|
- test/from_test.rb
|
245
|
-
- test/
|
246
|
-
- test/
|
292
|
+
- test/inherit_new_api.rb
|
293
|
+
- test/inherit_old_api.rb
|
294
|
+
- test/module_new_api.rb
|
295
|
+
- test/module_old_api.rb
|
296
|
+
- test/parse_option_test.rb
|
247
297
|
- test/parse_pipeline_test.rb
|
248
|
-
- test/
|
298
|
+
- test/populate_new_api.rb
|
299
|
+
- test/populate_old_api.rb
|
249
300
|
- test/populator_skip_test.rb
|
250
301
|
- test/prepopulator_test.rb
|
251
302
|
- test/read_only_test.rb
|
252
303
|
- test/readable_test.rb
|
253
|
-
- test/
|
254
|
-
- test/
|
255
|
-
- test/
|
304
|
+
- test/reform_new_api.rb
|
305
|
+
- test/reform_old_api.rb
|
306
|
+
- test/save_new_api.rb
|
307
|
+
- test/save_old_api.rb
|
256
308
|
- test/setup_test.rb
|
257
|
-
- test/
|
309
|
+
- test/skip_if_new_api.rb
|
310
|
+
- test/skip_if_old_api.rb
|
258
311
|
- test/skip_setter_and_getter_test.rb
|
259
312
|
- test/test_helper.rb
|
260
|
-
- test/
|
261
|
-
- test/
|
262
|
-
- test/validation/
|
263
|
-
- test/validation/
|
313
|
+
- test/validate_new_api.rb
|
314
|
+
- test/validate_old_api.rb
|
315
|
+
- test/validation/dry_validation_new_api.rb
|
316
|
+
- test/validation/dry_validation_old_api.rb
|
317
|
+
- test/validation/result_test.rb
|
318
|
+
- test/validation_library_provided_test.rb
|
264
319
|
- test/virtual_test.rb
|
265
320
|
- test/writeable_test.rb
|