reform 2.2.3 → 2.3.2
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 +56 -0
- 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 +47 -0
- data/lib/reform/form/dry/old_api.rb +61 -0
- data/lib/reform/form/populator.rb +11 -29
- data/lib/reform/form/prepopulate.rb +5 -4
- 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 +13 -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 +453 -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 +101 -72
- 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.2
|
4
|
+
version: 2.3.2
|
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-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: disposable
|
@@ -17,60 +17,54 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 0.
|
20
|
+
version: 0.4.2
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.
|
23
|
+
version: 0.5.0
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.
|
30
|
+
version: 0.4.2
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.5.0
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
35
|
+
name: representable
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.4.0
|
41
41
|
- - "<"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
43
|
+
version: 3.1.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
46
|
version_requirements: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - ">="
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
50
|
+
version: 2.4.0
|
51
51
|
- - "<"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 3.1.0
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
|
-
name:
|
55
|
+
name: uber
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 2.4.0
|
61
58
|
- - "<"
|
62
59
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
60
|
+
version: 0.2.0
|
64
61
|
type: :runtime
|
65
62
|
prerelease: false
|
66
63
|
version_requirements: !ruby/object:Gem::Requirement
|
67
64
|
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 2.4.0
|
71
65
|
- - "<"
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
67
|
+
version: 0.2.0
|
74
68
|
- !ruby/object:Gem::Dependency
|
75
69
|
name: bundler
|
76
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +80,7 @@ dependencies:
|
|
86
80
|
- !ruby/object:Gem::Version
|
87
81
|
version: '0'
|
88
82
|
- !ruby/object:Gem::Dependency
|
89
|
-
name:
|
83
|
+
name: minitest
|
90
84
|
requirement: !ruby/object:Gem::Requirement
|
91
85
|
requirements:
|
92
86
|
- - ">="
|
@@ -100,7 +94,7 @@ dependencies:
|
|
100
94
|
- !ruby/object:Gem::Version
|
101
95
|
version: '0'
|
102
96
|
- !ruby/object:Gem::Dependency
|
103
|
-
name: minitest
|
97
|
+
name: minitest-line
|
104
98
|
requirement: !ruby/object:Gem::Requirement
|
105
99
|
requirements:
|
106
100
|
- - ">="
|
@@ -114,7 +108,7 @@ dependencies:
|
|
114
108
|
- !ruby/object:Gem::Version
|
115
109
|
version: '0'
|
116
110
|
- !ruby/object:Gem::Dependency
|
117
|
-
name:
|
111
|
+
name: pry-byebug
|
118
112
|
requirement: !ruby/object:Gem::Requirement
|
119
113
|
requirements:
|
120
114
|
- - ">="
|
@@ -142,93 +136,114 @@ dependencies:
|
|
142
136
|
- !ruby/object:Gem::Version
|
143
137
|
version: '0'
|
144
138
|
- !ruby/object:Gem::Dependency
|
145
|
-
name:
|
139
|
+
name: rake
|
146
140
|
requirement: !ruby/object:Gem::Requirement
|
147
141
|
requirements:
|
148
142
|
- - ">="
|
149
143
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0
|
144
|
+
version: '0'
|
151
145
|
type: :development
|
152
146
|
prerelease: false
|
153
147
|
version_requirements: !ruby/object:Gem::Requirement
|
154
148
|
requirements:
|
155
149
|
- - ">="
|
156
150
|
- !ruby/object:Gem::Version
|
157
|
-
version: 0
|
151
|
+
version: '0'
|
158
152
|
description: Form object decoupled from models.
|
159
153
|
email:
|
160
154
|
- apotonick@gmail.com
|
161
|
-
-
|
155
|
+
- frances@safetytoolbox.co.uk
|
162
156
|
executables: []
|
163
157
|
extensions: []
|
164
158
|
extra_rdoc_files: []
|
165
159
|
files:
|
166
160
|
- ".gitignore"
|
167
161
|
- ".travis.yml"
|
162
|
+
- Appraisals
|
168
163
|
- CHANGES.md
|
164
|
+
- CONTRIBUTING.md
|
169
165
|
- Gemfile
|
166
|
+
- ISSUE_TEMPLATE.md
|
170
167
|
- LICENSE.txt
|
171
168
|
- README.md
|
172
169
|
- Rakefile
|
173
170
|
- TODO.md
|
174
|
-
- gemfiles/
|
171
|
+
- gemfiles/0.13.0.gemfile
|
172
|
+
- gemfiles/1.5.0.gemfile
|
175
173
|
- lib/reform.rb
|
176
174
|
- lib/reform/contract.rb
|
177
|
-
- lib/reform/contract/
|
175
|
+
- lib/reform/contract/custom_error.rb
|
178
176
|
- lib/reform/contract/validate.rb
|
177
|
+
- lib/reform/errors.rb
|
179
178
|
- lib/reform/form.rb
|
180
179
|
- lib/reform/form/call.rb
|
181
180
|
- lib/reform/form/coercion.rb
|
182
181
|
- lib/reform/form/composition.rb
|
183
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
|
184
186
|
- lib/reform/form/module.rb
|
185
|
-
- lib/reform/form/mongoid.rb
|
186
|
-
- lib/reform/form/orm.rb
|
187
187
|
- lib/reform/form/populator.rb
|
188
188
|
- lib/reform/form/prepopulate.rb
|
189
189
|
- lib/reform/form/validate.rb
|
190
|
-
- lib/reform/
|
190
|
+
- lib/reform/result.rb
|
191
191
|
- lib/reform/validation.rb
|
192
192
|
- lib/reform/validation/groups.rb
|
193
193
|
- lib/reform/version.rb
|
194
194
|
- reform.gemspec
|
195
195
|
- test/benchmarking.rb
|
196
|
-
- test/
|
196
|
+
- test/call_new_api.rb
|
197
|
+
- test/call_old_api.rb
|
197
198
|
- test/changed_test.rb
|
198
199
|
- test/coercion_test.rb
|
199
|
-
- test/
|
200
|
-
- 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
|
201
205
|
- test/default_test.rb
|
202
|
-
- test/deprecation_test.rb
|
203
206
|
- test/deserialize_test.rb
|
204
|
-
- test/
|
207
|
+
- test/errors_new_api.rb
|
208
|
+
- test/errors_old_api.rb
|
205
209
|
- test/feature_test.rb
|
206
210
|
- test/fixtures/dry_error_messages.yml
|
207
|
-
- test/
|
208
|
-
- 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
|
209
216
|
- test/from_test.rb
|
210
|
-
- test/
|
211
|
-
- 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
|
212
222
|
- test/parse_pipeline_test.rb
|
213
|
-
- test/
|
223
|
+
- test/populate_new_api.rb
|
224
|
+
- test/populate_old_api.rb
|
214
225
|
- test/populator_skip_test.rb
|
215
226
|
- test/prepopulator_test.rb
|
216
227
|
- test/read_only_test.rb
|
217
228
|
- test/readable_test.rb
|
218
|
-
- test/
|
219
|
-
- test/
|
220
|
-
- 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
|
221
233
|
- test/setup_test.rb
|
222
|
-
- test/
|
234
|
+
- test/skip_if_new_api.rb
|
235
|
+
- test/skip_if_old_api.rb
|
223
236
|
- test/skip_setter_and_getter_test.rb
|
224
237
|
- test/test_helper.rb
|
225
|
-
- test/
|
226
|
-
- test/
|
227
|
-
- test/validation/
|
228
|
-
- 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
|
229
244
|
- test/virtual_test.rb
|
230
245
|
- test/writeable_test.rb
|
231
|
-
homepage: https://github.com/
|
246
|
+
homepage: https://github.com/trailblazer/reform
|
232
247
|
licenses:
|
233
248
|
- MIT
|
234
249
|
metadata: {}
|
@@ -247,45 +262,59 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
262
|
- !ruby/object:Gem::Version
|
248
263
|
version: '0'
|
249
264
|
requirements: []
|
250
|
-
|
251
|
-
rubygems_version: 2.6.3
|
265
|
+
rubygems_version: 3.0.3
|
252
266
|
signing_key:
|
253
267
|
specification_version: 4
|
254
268
|
summary: Form object decoupled from models with validation, population and presentation.
|
255
269
|
test_files:
|
256
270
|
- test/benchmarking.rb
|
257
|
-
- test/
|
271
|
+
- test/call_new_api.rb
|
272
|
+
- test/call_old_api.rb
|
258
273
|
- test/changed_test.rb
|
259
274
|
- test/coercion_test.rb
|
260
|
-
- test/
|
261
|
-
- 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
|
262
280
|
- test/default_test.rb
|
263
|
-
- test/deprecation_test.rb
|
264
281
|
- test/deserialize_test.rb
|
265
|
-
- test/
|
282
|
+
- test/errors_new_api.rb
|
283
|
+
- test/errors_old_api.rb
|
266
284
|
- test/feature_test.rb
|
267
285
|
- test/fixtures/dry_error_messages.yml
|
268
|
-
- test/
|
269
|
-
- 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
|
270
291
|
- test/from_test.rb
|
271
|
-
- test/
|
272
|
-
- 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
|
273
297
|
- test/parse_pipeline_test.rb
|
274
|
-
- test/
|
298
|
+
- test/populate_new_api.rb
|
299
|
+
- test/populate_old_api.rb
|
275
300
|
- test/populator_skip_test.rb
|
276
301
|
- test/prepopulator_test.rb
|
277
302
|
- test/read_only_test.rb
|
278
303
|
- test/readable_test.rb
|
279
|
-
- test/
|
280
|
-
- test/
|
281
|
-
- 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
|
282
308
|
- test/setup_test.rb
|
283
|
-
- test/
|
309
|
+
- test/skip_if_new_api.rb
|
310
|
+
- test/skip_if_old_api.rb
|
284
311
|
- test/skip_setter_and_getter_test.rb
|
285
312
|
- test/test_helper.rb
|
286
|
-
- test/
|
287
|
-
- test/
|
288
|
-
- test/validation/
|
289
|
-
- 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
|
290
319
|
- test/virtual_test.rb
|
291
320
|
- test/writeable_test.rb
|