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.
Files changed (103) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +5 -1
  3. data/.travis.yml +11 -6
  4. data/Appraisals +8 -0
  5. data/CHANGES.md +57 -4
  6. data/CONTRIBUTING.md +31 -0
  7. data/Gemfile +2 -16
  8. data/ISSUE_TEMPLATE.md +25 -0
  9. data/LICENSE.txt +1 -1
  10. data/README.md +5 -7
  11. data/Rakefile +16 -9
  12. data/gemfiles/0.13.0.gemfile +8 -0
  13. data/gemfiles/1.5.0.gemfile +9 -0
  14. data/lib/reform.rb +1 -0
  15. data/lib/reform/contract.rb +7 -17
  16. data/lib/reform/contract/custom_error.rb +41 -0
  17. data/lib/reform/contract/validate.rb +53 -23
  18. data/lib/reform/errors.rb +61 -0
  19. data/lib/reform/form.rb +36 -10
  20. data/lib/reform/form/call.rb +1 -1
  21. data/lib/reform/form/composition.rb +2 -2
  22. data/lib/reform/form/dry.rb +10 -58
  23. data/lib/reform/form/dry/input_hash.rb +37 -0
  24. data/lib/reform/form/dry/new_api.rb +45 -0
  25. data/lib/reform/form/dry/old_api.rb +61 -0
  26. data/lib/reform/form/populator.rb +11 -27
  27. data/lib/reform/form/prepopulate.rb +4 -3
  28. data/lib/reform/form/validate.rb +28 -13
  29. data/lib/reform/result.rb +90 -0
  30. data/lib/reform/validation.rb +19 -11
  31. data/lib/reform/validation/groups.rb +12 -27
  32. data/lib/reform/version.rb +1 -1
  33. data/reform.gemspec +14 -13
  34. data/test/benchmarking.rb +39 -6
  35. data/test/call_new_api.rb +23 -0
  36. data/test/call_old_api.rb +23 -0
  37. data/test/changed_test.rb +14 -14
  38. data/test/coercion_test.rb +57 -25
  39. data/test/composition_new_api.rb +186 -0
  40. data/test/composition_old_api.rb +184 -0
  41. data/test/contract/custom_error_test.rb +55 -0
  42. data/test/contract_new_api.rb +77 -0
  43. data/test/contract_old_api.rb +77 -0
  44. data/test/default_test.rb +4 -4
  45. data/test/deserialize_test.rb +17 -20
  46. data/test/errors_new_api.rb +225 -0
  47. data/test/errors_old_api.rb +230 -0
  48. data/test/feature_test.rb +10 -12
  49. data/test/fixtures/dry_error_messages.yml +73 -23
  50. data/test/fixtures/dry_new_api_error_messages.yml +104 -0
  51. data/test/form_new_api.rb +57 -0
  52. data/test/{form_test.rb → form_old_api.rb} +8 -8
  53. data/test/form_option_new_api.rb +24 -0
  54. data/test/{form_option_test.rb → form_option_old_api.rb} +5 -5
  55. data/test/from_test.rb +18 -22
  56. data/test/inherit_new_api.rb +105 -0
  57. data/test/inherit_old_api.rb +105 -0
  58. data/test/{module_test.rb → module_new_api.rb} +26 -31
  59. data/test/module_old_api.rb +146 -0
  60. data/test/parse_option_test.rb +40 -0
  61. data/test/parse_pipeline_test.rb +4 -4
  62. data/test/populate_new_api.rb +304 -0
  63. data/test/populate_old_api.rb +304 -0
  64. data/test/populator_skip_test.rb +11 -11
  65. data/test/prepopulator_test.rb +23 -24
  66. data/test/read_only_test.rb +12 -1
  67. data/test/readable_test.rb +9 -9
  68. data/test/reform_new_api.rb +204 -0
  69. data/test/{reform_test.rb → reform_old_api.rb} +44 -65
  70. data/test/save_new_api.rb +101 -0
  71. data/test/save_old_api.rb +101 -0
  72. data/test/setup_test.rb +17 -17
  73. data/test/skip_if_new_api.rb +85 -0
  74. data/test/skip_if_old_api.rb +92 -0
  75. data/test/skip_setter_and_getter_test.rb +9 -10
  76. data/test/test_helper.rb +25 -14
  77. data/test/validate_new_api.rb +453 -0
  78. data/test/{validate_test.rb → validate_old_api.rb} +121 -131
  79. data/test/validation/dry_validation_new_api.rb +835 -0
  80. data/test/validation/dry_validation_old_api.rb +772 -0
  81. data/test/validation/result_test.rb +77 -0
  82. data/test/validation_library_provided_test.rb +16 -0
  83. data/test/virtual_test.rb +47 -7
  84. data/test/writeable_test.rb +38 -9
  85. metadata +111 -56
  86. data/gemfiles/Gemfile.disposable-0.3 +0 -6
  87. data/lib/reform/contract/errors.rb +0 -43
  88. data/lib/reform/form/mongoid.rb +0 -37
  89. data/lib/reform/form/orm.rb +0 -26
  90. data/lib/reform/mongoid.rb +0 -4
  91. data/test/call_test.rb +0 -23
  92. data/test/composition_test.rb +0 -149
  93. data/test/contract_test.rb +0 -77
  94. data/test/deprecation_test.rb +0 -27
  95. data/test/errors_test.rb +0 -165
  96. data/test/inherit_test.rb +0 -119
  97. data/test/populate_test.rb +0 -270
  98. data/test/readonly_test.rb +0 -14
  99. data/test/save_test.rb +0 -89
  100. data/test/skip_if_test.rb +0 -74
  101. data/test/validation/dry_test.rb +0 -60
  102. data/test/validation/dry_validation_test.rb +0 -352
  103. 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
@@ -1,16 +1,20 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class VirtualTest < MiniTest::Spec
4
- class CreditCardForm < Reform::Form
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 (:form) { CreditCardForm.new(Object.new) }
11
+ let(:form) { CreditCardForm.new(Object.new) }
9
12
 
10
13
  it {
11
- form.validate("credit_card_number" => "123")
14
+ form.validate(credit_card_number: "123", transactions: [id: 1])
12
15
 
13
- form.credit_card_number.must_equal "123" # this is still readable in the UI.
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
@@ -1,29 +1,58 @@
1
- require 'test_helper'
1
+ require "test_helper"
2
2
 
3
3
  class WriteableTest < MiniTest::Spec
4
4
  Location = Struct.new(:country)
5
5
 
6
- class LocationForm < Reform::Form
6
+ class LocationForm < TestForm
7
7
  property :country, writeable: false
8
8
  end
9
9
 
10
- let (:loc) { Location.new("Australia") }
11
- let (:form) { LocationForm.new(loc) }
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.2.4
4
+ version: 2.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
- - Garrett Heinlen
8
+ - Fran Worley
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-31 00:00:00.000000000 Z
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.1
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.1
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: rake
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: dry-types
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: dry-validation
139
+ name: rake
120
140
  requirement: !ruby/object:Gem::Requirement
121
141
  requirements:
122
142
  - - ">="
123
143
  - !ruby/object:Gem::Version
124
- version: 0.10.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.10.0
151
+ version: '0'
132
152
  description: Form object decoupled from models.
133
153
  email:
134
154
  - apotonick@gmail.com
135
- - heinleng@gmail.com
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/Gemfile.disposable-0.3
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/errors.rb
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/mongoid.rb
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/call_test.rb
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/composition_test.rb
174
- - test/contract_test.rb
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/errors_test.rb
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/form_option_test.rb
182
- - test/form_test.rb
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/inherit_test.rb
185
- - test/module_test.rb
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/populate_test.rb
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/readonly_test.rb
193
- - test/reform_test.rb
194
- - test/save_test.rb
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/skip_if_test.rb
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/validate_test.rb
200
- - test/validation/dry_test.rb
201
- - test/validation/dry_validation_test.rb
202
- - test/validation/errors.yml
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/apotonick/reform
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
- rubyforge_project:
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/call_test.rb
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/composition_test.rb
235
- - test/contract_test.rb
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/errors_test.rb
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/form_option_test.rb
243
- - test/form_test.rb
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/inherit_test.rb
246
- - test/module_test.rb
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/populate_test.rb
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/readonly_test.rb
254
- - test/reform_test.rb
255
- - test/save_test.rb
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/skip_if_test.rb
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/validate_test.rb
261
- - test/validation/dry_test.rb
262
- - test/validation/dry_validation_test.rb
263
- - test/validation/errors.yml
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