reform 2.3.2 → 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 +4 -4
- data/CHANGES.md +4 -0
- data/lib/reform/form/dry/new_api.rb +2 -4
- data/lib/reform/version.rb +1 -1
- data/test/call_new_api.rb +6 -6
- data/test/call_old_api.rb +6 -6
- data/test/changed_test.rb +6 -6
- data/test/coercion_test.rb +13 -13
- data/test/composition_new_api.rb +24 -24
- data/test/composition_old_api.rb +24 -24
- data/test/contract_new_api.rb +8 -8
- data/test/contract_old_api.rb +8 -8
- data/test/default_test.rb +2 -2
- data/test/deserialize_test.rb +8 -8
- data/test/errors_new_api.rb +38 -38
- data/test/errors_old_api.rb +38 -38
- data/test/feature_test.rb +2 -2
- data/test/form_new_api.rb +3 -3
- data/test/form_old_api.rb +3 -3
- data/test/form_option_new_api.rb +1 -1
- data/test/form_option_old_api.rb +1 -1
- data/test/from_test.rb +10 -10
- data/test/inherit_new_api.rb +17 -17
- data/test/inherit_old_api.rb +17 -17
- data/test/module_new_api.rb +8 -8
- data/test/module_old_api.rb +9 -9
- data/test/parse_option_test.rb +7 -7
- data/test/parse_pipeline_test.rb +1 -1
- data/test/populate_new_api.rb +53 -53
- data/test/populate_old_api.rb +53 -53
- data/test/populator_skip_test.rb +2 -2
- data/test/prepopulator_test.rb +15 -15
- data/test/read_only_test.rb +2 -2
- data/test/readable_test.rb +3 -3
- data/test/reform_new_api.rb +19 -19
- data/test/reform_old_api.rb +19 -19
- data/test/save_new_api.rb +4 -4
- data/test/save_old_api.rb +4 -4
- data/test/setup_test.rb +9 -9
- data/test/skip_if_new_api.rb +12 -12
- data/test/skip_if_old_api.rb +15 -15
- data/test/skip_setter_and_getter_test.rb +6 -6
- data/test/validate_new_api.rb +62 -62
- data/test/validate_old_api.rb +64 -64
- data/test/validation/dry_validation_new_api.rb +115 -116
- data/test/validation/dry_validation_old_api.rb +105 -105
- data/test/validation/result_test.rb +14 -14
- data/test/virtual_test.rb +7 -7
- data/test/writeable_test.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f5d5dea8c04f5d993a91776afffea2a0b48603d850c11204d04e79248be6cf8
|
4
|
+
data.tar.gz: e4132e9db35384198bf31797b8620219c6418df4781a8f5300bbcf38c1a1c630
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0845ada0bbafc7c3a45485d51f93c66c8616bee7b23c851712d297be20c73e82f23a8e575f803adb2972c382c4c9003951ae8d788fe12df87195950490505028'
|
7
|
+
data.tar.gz: bd463ddb326f4db34ef9ad6948cdb9466a56c87514f2a18fcafba6dff29b54baf5640b97b490657b92e438c336869f35adc3e407b91be80351f427fd84f28c35
|
data/CHANGES.md
CHANGED
@@ -20,8 +20,8 @@ module Reform::Form::Dry
|
|
20
20
|
class Group
|
21
21
|
include InputHash
|
22
22
|
|
23
|
-
def initialize(options
|
24
|
-
@validator = options.fetch(:
|
23
|
+
def initialize(**options)
|
24
|
+
@validator = options.fetch(:contract, Contract)
|
25
25
|
@schema_inject_params = options.fetch(:with, {})
|
26
26
|
end
|
27
27
|
|
@@ -32,8 +32,6 @@ module Reform::Form::Dry
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def call(form)
|
35
|
-
# when passing options[:schema] the class instance is already created so we just need to call
|
36
|
-
# "call"
|
37
35
|
return validator.call(input_hash(form)) unless validator.is_a?(Class) && @validator <= ::Dry::Validation::Contract
|
38
36
|
|
39
37
|
dynamic_options = { form: form }
|
data/lib/reform/version.rb
CHANGED
data/test/call_new_api.rb
CHANGED
@@ -13,11 +13,11 @@ class CallTest < Minitest::Spec
|
|
13
13
|
|
14
14
|
let(:form) { SongForm.new(Song.new) }
|
15
15
|
|
16
|
-
it { form.(title: "True North").success
|
17
|
-
it { form.(title: "True North").failure
|
18
|
-
it { form.(title: "").success
|
19
|
-
it { form.(title: "").failure
|
16
|
+
it { _(form.(title: "True North").success?).must_equal true }
|
17
|
+
it { _(form.(title: "True North").failure?).must_equal false }
|
18
|
+
it { _(form.(title: "").success?).must_equal false }
|
19
|
+
it { _(form.(title: "").failure?).must_equal true }
|
20
20
|
|
21
|
-
it { form.(title: "True North").errors.messages.must_equal({}) }
|
22
|
-
it { form.(title: "").errors.messages.must_equal(title: ["must be filled"]) }
|
21
|
+
it { _(form.(title: "True North").errors.messages).must_equal({}) }
|
22
|
+
it { _(form.(title: "").errors.messages).must_equal(title: ["must be filled"]) }
|
23
23
|
end
|
data/test/call_old_api.rb
CHANGED
@@ -13,11 +13,11 @@ class CallTest < Minitest::Spec
|
|
13
13
|
|
14
14
|
let(:form) { SongForm.new(Song.new) }
|
15
15
|
|
16
|
-
it { form.(title: "True North").success
|
17
|
-
it { form.(title: "True North").failure
|
18
|
-
it { form.(title: "").success
|
19
|
-
it { form.(title: "").failure
|
16
|
+
it { _(form.(title: "True North").success?).must_equal true }
|
17
|
+
it { _(form.(title: "True North").failure?).must_equal false }
|
18
|
+
it { _(form.(title: "").success?).must_equal false }
|
19
|
+
it { _(form.(title: "").failure?).must_equal true }
|
20
20
|
|
21
|
-
it { form.(title: "True North").errors.messages.must_equal({}) }
|
22
|
-
it { form.(title: "").errors.messages.must_equal(title: ["must be filled"]) }
|
21
|
+
it { _(form.(title: "True North").errors.messages).must_equal({}) }
|
22
|
+
it { _(form.(title: "").errors.messages).must_equal(title: ["must be filled"]) }
|
23
23
|
end
|
data/test/changed_test.rb
CHANGED
@@ -26,16 +26,16 @@ class ChangedTest < MiniTest::Spec
|
|
26
26
|
|
27
27
|
# nothing changed after setup.
|
28
28
|
it do
|
29
|
-
form.changed?(:name).must_equal false
|
30
|
-
form.songs[0].changed?(:title).must_equal false
|
31
|
-
form.songs[0].composer.changed?(:name).must_equal false
|
29
|
+
_(form.changed?(:name)).must_equal false
|
30
|
+
_(form.songs[0].changed?(:title)).must_equal false
|
31
|
+
_(form.songs[0].composer.changed?(:name)).must_equal false
|
32
32
|
end
|
33
33
|
|
34
34
|
# after validate, things might have changed.
|
35
35
|
it do
|
36
36
|
form.validate("name" => "Out Of Bounds", "songs" => [{"composer" => {"name" => "Ingemar Jansson & Mikael Danielsson"}}])
|
37
|
-
form.changed?(:name).must_equal true
|
38
|
-
form.songs[0].changed?(:title).must_equal false
|
39
|
-
form.songs[0].composer.changed?(:name).must_equal true
|
37
|
+
_(form.changed?(:name)).must_equal true
|
38
|
+
_(form.songs[0].changed?(:title)).must_equal false
|
39
|
+
_(form.songs[0].composer.changed?(:name)).must_equal true
|
40
40
|
end
|
41
41
|
end
|
data/test/coercion_test.rb
CHANGED
@@ -47,9 +47,9 @@ class CoercionTest < BaseTest
|
|
47
47
|
end
|
48
48
|
|
49
49
|
# it { subject.released_at.must_be_kind_of DateTime }
|
50
|
-
it { subject.released_at.must_equal "31/03/1981" } # NO coercion in setup.
|
51
|
-
it { subject.hit.length.must_equal "312" }
|
52
|
-
it { subject.band.label.value.must_equal "9999.99" }
|
50
|
+
it { _(subject.released_at).must_equal "31/03/1981" } # NO coercion in setup.
|
51
|
+
it { _(subject.hit.length).must_equal "312" }
|
52
|
+
it { _(subject.band.label.value).must_equal "9999.99" }
|
53
53
|
|
54
54
|
let(:params) do
|
55
55
|
{
|
@@ -75,24 +75,24 @@ class CoercionTest < BaseTest
|
|
75
75
|
describe "#validate" do
|
76
76
|
before { subject.validate(params) }
|
77
77
|
|
78
|
-
it { subject.released_at.must_equal DateTime.parse("30/03/1981") }
|
79
|
-
it { subject.hit.length.must_equal 312 }
|
80
|
-
it { subject.hit.good.must_equal false }
|
81
|
-
it { subject.band.label.value.must_equal "9999.999999.99" } # coercion happened once.
|
82
|
-
it { subject.metadata.publication_settings.featured.must_equal false }
|
78
|
+
it { _(subject.released_at).must_equal DateTime.parse("30/03/1981") }
|
79
|
+
it { _(subject.hit.length).must_equal 312 }
|
80
|
+
it { _(subject.hit.good).must_equal false }
|
81
|
+
it { _(subject.band.label.value).must_equal "9999.999999.99" } # coercion happened once.
|
82
|
+
it { _(subject.metadata.publication_settings.featured).must_equal false }
|
83
83
|
end
|
84
84
|
|
85
85
|
# sync
|
86
86
|
describe "#sync" do
|
87
87
|
before do
|
88
|
-
subject.validate(params).must_equal true
|
88
|
+
_(subject.validate(params)).must_equal true
|
89
89
|
subject.sync
|
90
90
|
end
|
91
91
|
|
92
|
-
it { album.released_at.must_equal DateTime.parse("30/03/1981") }
|
93
|
-
it { album.hit.length.must_equal 312 }
|
94
|
-
it { album.hit.good.must_equal false }
|
92
|
+
it { _(album.released_at).must_equal DateTime.parse("30/03/1981") }
|
93
|
+
it { _(album.hit.length).must_equal 312 }
|
94
|
+
it { _(album.hit.good).must_equal false }
|
95
95
|
it { assert_nil album.metadata[:publication_settings] }
|
96
|
-
it { album.metadata["publication_settings"]["featured"].must_equal false }
|
96
|
+
it { _(album.metadata["publication_settings"]["featured"]).must_equal false }
|
97
97
|
end
|
98
98
|
end
|
data/test/composition_new_api.rb
CHANGED
@@ -33,8 +33,8 @@ class FormCompositionInheritanceTest < MiniTest::Spec
|
|
33
33
|
Tshirt = Struct.new(:price, :size)
|
34
34
|
Measurement = Struct.new(:size)
|
35
35
|
|
36
|
-
it { form.price.must_equal 6 }
|
37
|
-
it { form.price(for_size: :s).must_equal 2 }
|
36
|
+
it { _(form.price).must_equal 6 }
|
37
|
+
it { _(form.price(for_size: :s)).must_equal 2 }
|
38
38
|
end
|
39
39
|
|
40
40
|
class FormCompositionTest < MiniTest::Spec
|
@@ -71,24 +71,24 @@ class FormCompositionTest < MiniTest::Spec
|
|
71
71
|
let(:band) { Band.new("Duran^2") }
|
72
72
|
|
73
73
|
# delegation form -> composition works
|
74
|
-
it { form.id.must_equal 1 }
|
75
|
-
it { form.title.must_equal "Rio" }
|
76
|
-
it { form.name.must_equal "Duran Duran" }
|
77
|
-
it { form.requester_id.must_equal 2 }
|
74
|
+
it { _(form.id).must_equal 1 }
|
75
|
+
it { _(form.title).must_equal "Rio" }
|
76
|
+
it { _(form.name).must_equal "Duran Duran" }
|
77
|
+
it { _(form.requester_id).must_equal 2 }
|
78
78
|
it { assert_nil form.channel }
|
79
|
-
it { form.requester.must_equal "MCP" } # same name as composed model.
|
79
|
+
it { _(form.requester).must_equal "MCP" } # same name as composed model.
|
80
80
|
it { assert_nil form.captcha }
|
81
81
|
|
82
82
|
# #model just returns <Composition>.
|
83
|
-
it { form.mapper.must_be_kind_of Disposable::Composition }
|
83
|
+
it { _(form.mapper).must_be_kind_of Disposable::Composition }
|
84
84
|
|
85
85
|
# #model[] -> composed models
|
86
|
-
it { form.model[:requester].must_equal requester }
|
87
|
-
it { form.model[:song].must_equal song }
|
86
|
+
it { _(form.model[:requester]).must_equal requester }
|
87
|
+
it { _(form.model[:song]).must_equal song }
|
88
88
|
|
89
89
|
it "creates Composition for you" do
|
90
|
-
form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb").must_equal true
|
91
|
-
form.validate("title" => "", "name" => "Frenzal Rhomb").must_equal false
|
90
|
+
_(form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb")).must_equal true
|
91
|
+
_(form.validate("title" => "", "name" => "Frenzal Rhomb")).must_equal false
|
92
92
|
end
|
93
93
|
|
94
94
|
describe "#save" do
|
@@ -101,7 +101,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
101
101
|
hash[:title] = form.title
|
102
102
|
end
|
103
103
|
|
104
|
-
hash.must_equal({name: "Duran Duran", title: "Rio"})
|
104
|
+
_(hash).must_equal({name: "Duran Duran", title: "Rio"})
|
105
105
|
end
|
106
106
|
|
107
107
|
it "provides nested symbolized hash as second block argument" do
|
@@ -113,7 +113,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
113
113
|
hash = map
|
114
114
|
end
|
115
115
|
|
116
|
-
hash.must_equal({
|
116
|
+
_(hash).must_equal({
|
117
117
|
song: {"title" => "Greyhound", "id" => 1, "channel" => "JJJ", "captcha" => "wonderful", "band" => {"title" => "Duran^2"}},
|
118
118
|
requester: {"name" => "Frenzal Rhomb", "id" => 2, "requester" => "MCP"}
|
119
119
|
}
|
@@ -126,16 +126,16 @@ class FormCompositionTest < MiniTest::Spec
|
|
126
126
|
band.extend(Saveable)
|
127
127
|
|
128
128
|
form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb", "captcha" => "1337")
|
129
|
-
form.captcha.must_equal "1337" # TODO: move to separate test.
|
129
|
+
_(form.captcha).must_equal "1337" # TODO: move to separate test.
|
130
130
|
|
131
131
|
form.save
|
132
132
|
|
133
|
-
requester.name.must_equal "Frenzal Rhomb"
|
134
|
-
requester.saved
|
135
|
-
song.title.must_equal "Greyhound"
|
136
|
-
song.saved
|
137
|
-
song.band.title.must_equal "Duran^2"
|
138
|
-
song.band.saved
|
133
|
+
_(requester.name).must_equal "Frenzal Rhomb"
|
134
|
+
_(requester.saved?).must_equal true
|
135
|
+
_(song.title).must_equal "Greyhound"
|
136
|
+
_(song.saved?).must_equal true
|
137
|
+
_(song.band.title).must_equal "Duran^2"
|
138
|
+
_(song.band.saved?).must_equal true
|
139
139
|
end
|
140
140
|
|
141
141
|
it "returns true when models all save successfully" do
|
@@ -143,7 +143,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
143
143
|
requester.extend(Saveable)
|
144
144
|
band.extend(Saveable)
|
145
145
|
|
146
|
-
form.save.must_equal true
|
146
|
+
_(form.save).must_equal true
|
147
147
|
end
|
148
148
|
|
149
149
|
it "returns false when one or more models don't save successfully" do
|
@@ -157,7 +157,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
157
157
|
requester.extend(Saveable)
|
158
158
|
band.extend(Saveable)
|
159
159
|
|
160
|
-
form.save.must_equal false
|
160
|
+
_(form.save).must_equal false
|
161
161
|
end
|
162
162
|
end
|
163
163
|
end
|
@@ -182,5 +182,5 @@ class FormCompositionCollectionTest < MiniTest::Spec
|
|
182
182
|
let(:form) { LibraryForm.new(library: library) }
|
183
183
|
let(:library) { Library.new(2) }
|
184
184
|
|
185
|
-
it { form.save { |hash| hash.must_equal({library: {"books" => [{"id" => 1, "name" => "My book"}]}}) } }
|
185
|
+
it { form.save { |hash| _(hash).must_equal({library: {"books" => [{"id" => 1, "name" => "My book"}]}}) } }
|
186
186
|
end
|
data/test/composition_old_api.rb
CHANGED
@@ -33,8 +33,8 @@ class FormCompositionInheritanceTest < MiniTest::Spec
|
|
33
33
|
Tshirt = Struct.new(:price, :size)
|
34
34
|
Measurement = Struct.new(:size)
|
35
35
|
|
36
|
-
it { form.price.must_equal 6 }
|
37
|
-
it { form.price(for_size: :s).must_equal 2 }
|
36
|
+
it { _(form.price).must_equal 6 }
|
37
|
+
it { _(form.price(for_size: :s)).must_equal 2 }
|
38
38
|
end
|
39
39
|
|
40
40
|
class FormCompositionTest < MiniTest::Spec
|
@@ -69,24 +69,24 @@ class FormCompositionTest < MiniTest::Spec
|
|
69
69
|
let(:band) { Band.new("Duran^2") }
|
70
70
|
|
71
71
|
# delegation form -> composition works
|
72
|
-
it { form.id.must_equal 1 }
|
73
|
-
it { form.title.must_equal "Rio" }
|
74
|
-
it { form.name.must_equal "Duran Duran" }
|
75
|
-
it { form.requester_id.must_equal 2 }
|
72
|
+
it { _(form.id).must_equal 1 }
|
73
|
+
it { _(form.title).must_equal "Rio" }
|
74
|
+
it { _(form.name).must_equal "Duran Duran" }
|
75
|
+
it { _(form.requester_id).must_equal 2 }
|
76
76
|
it { assert_nil form.channel }
|
77
|
-
it { form.requester.must_equal "MCP" } # same name as composed model.
|
77
|
+
it { _(form.requester).must_equal "MCP" } # same name as composed model.
|
78
78
|
it { assert_nil form.captcha }
|
79
79
|
|
80
80
|
# #model just returns <Composition>.
|
81
|
-
it { form.mapper.must_be_kind_of Disposable::Composition }
|
81
|
+
it { _(form.mapper).must_be_kind_of Disposable::Composition }
|
82
82
|
|
83
83
|
# #model[] -> composed models
|
84
|
-
it { form.model[:requester].must_equal requester }
|
85
|
-
it { form.model[:song].must_equal song }
|
84
|
+
it { _(form.model[:requester]).must_equal requester }
|
85
|
+
it { _(form.model[:song]).must_equal song }
|
86
86
|
|
87
87
|
it "creates Composition for you" do
|
88
|
-
form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb").must_equal true
|
89
|
-
form.validate("title" => "", "name" => "Frenzal Rhomb").must_equal false
|
88
|
+
_(form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb")).must_equal true
|
89
|
+
_(form.validate("title" => "", "name" => "Frenzal Rhomb")).must_equal false
|
90
90
|
end
|
91
91
|
|
92
92
|
describe "#save" do
|
@@ -99,7 +99,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
99
99
|
hash[:title] = form.title
|
100
100
|
end
|
101
101
|
|
102
|
-
hash.must_equal({name: "Duran Duran", title: "Rio"})
|
102
|
+
_(hash).must_equal({name: "Duran Duran", title: "Rio"})
|
103
103
|
end
|
104
104
|
|
105
105
|
it "provides nested symbolized hash as second block argument" do
|
@@ -111,7 +111,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
111
111
|
hash = map
|
112
112
|
end
|
113
113
|
|
114
|
-
hash.must_equal({
|
114
|
+
_(hash).must_equal({
|
115
115
|
song: {"title" => "Greyhound", "id" => 1, "channel" => "JJJ", "captcha" => "wonderful", "band" => {"title" => "Duran^2"}},
|
116
116
|
requester: {"name" => "Frenzal Rhomb", "id" => 2, "requester" => "MCP"}
|
117
117
|
}
|
@@ -124,16 +124,16 @@ class FormCompositionTest < MiniTest::Spec
|
|
124
124
|
band.extend(Saveable)
|
125
125
|
|
126
126
|
form.validate("title" => "Greyhound", "name" => "Frenzal Rhomb", "captcha" => "1337")
|
127
|
-
form.captcha.must_equal "1337" # TODO: move to separate test.
|
127
|
+
_(form.captcha).must_equal "1337" # TODO: move to separate test.
|
128
128
|
|
129
129
|
form.save
|
130
130
|
|
131
|
-
requester.name.must_equal "Frenzal Rhomb"
|
132
|
-
requester.saved
|
133
|
-
song.title.must_equal "Greyhound"
|
134
|
-
song.saved
|
135
|
-
song.band.title.must_equal "Duran^2"
|
136
|
-
song.band.saved
|
131
|
+
_(requester.name).must_equal "Frenzal Rhomb"
|
132
|
+
_(requester.saved?).must_equal true
|
133
|
+
_(song.title).must_equal "Greyhound"
|
134
|
+
_(song.saved?).must_equal true
|
135
|
+
_(song.band.title).must_equal "Duran^2"
|
136
|
+
_(song.band.saved?).must_equal true
|
137
137
|
end
|
138
138
|
|
139
139
|
it "returns true when models all save successfully" do
|
@@ -141,7 +141,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
141
141
|
requester.extend(Saveable)
|
142
142
|
band.extend(Saveable)
|
143
143
|
|
144
|
-
form.save.must_equal true
|
144
|
+
_(form.save).must_equal true
|
145
145
|
end
|
146
146
|
|
147
147
|
it "returns false when one or more models don't save successfully" do
|
@@ -155,7 +155,7 @@ class FormCompositionTest < MiniTest::Spec
|
|
155
155
|
requester.extend(Saveable)
|
156
156
|
band.extend(Saveable)
|
157
157
|
|
158
|
-
form.save.must_equal false
|
158
|
+
_(form.save).must_equal false
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
@@ -180,5 +180,5 @@ class FormCompositionCollectionTest < MiniTest::Spec
|
|
180
180
|
let(:form) { LibraryForm.new(library: library) }
|
181
181
|
let(:library) { Library.new(2) }
|
182
182
|
|
183
|
-
it { form.save { |hash| hash.must_equal({library: {"books" => [{"id" => 1, "name" => "My book"}]}}) } }
|
183
|
+
it { form.save { |hash| _(hash).must_equal({library: {"books" => [{"id" => 1, "name" => "My book"}]}}) } }
|
184
184
|
end
|
data/test/contract_new_api.rb
CHANGED
@@ -46,32 +46,32 @@ class ContractTest < MiniTest::Spec
|
|
46
46
|
|
47
47
|
# accept `property form: SongForm`.
|
48
48
|
it do
|
49
|
-
form.artist.must_be_instance_of ArtistForm
|
49
|
+
_(form.artist).must_be_instance_of ArtistForm
|
50
50
|
end
|
51
51
|
|
52
52
|
describe ".properties" do
|
53
53
|
it "defines a property when called with one argument" do
|
54
|
-
form.must_respond_to :duration
|
54
|
+
_(form).must_respond_to :duration
|
55
55
|
end
|
56
56
|
|
57
57
|
it "defines several properties when called with multiple arguments" do
|
58
|
-
form.must_respond_to :year
|
59
|
-
form.must_respond_to :style
|
58
|
+
_(form).must_respond_to :year
|
59
|
+
_(form).must_respond_to :style
|
60
60
|
end
|
61
61
|
|
62
62
|
it "passes options to each property when options are provided" do
|
63
63
|
readable = AlbumForm.new(album).options_for(:style)[:readable]
|
64
|
-
readable.must_equal false
|
64
|
+
_(readable).must_equal false
|
65
65
|
end
|
66
66
|
|
67
67
|
it "returns the list of defined properties" do
|
68
68
|
returned_value = AlbumForm.properties(:hello, :world, virtual: true)
|
69
|
-
returned_value.must_equal %i[hello world]
|
69
|
+
_(returned_value).must_equal %i[hello world]
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
73
|
describe "#options_for" do
|
74
|
-
it { AlbumForm.options_for(:name).extend(Declarative::Inspect).inspect.must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
75
|
-
it { AlbumForm.new(album).options_for(:name).extend(Declarative::Inspect).inspect.must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
74
|
+
it { _(AlbumForm.options_for(:name).extend(Declarative::Inspect).inspect).must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
75
|
+
it { _(AlbumForm.new(album).options_for(:name).extend(Declarative::Inspect).inspect).must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
76
76
|
end
|
77
77
|
end
|
data/test/contract_old_api.rb
CHANGED
@@ -46,32 +46,32 @@ class ContractTest < MiniTest::Spec
|
|
46
46
|
|
47
47
|
# accept `property form: SongForm`.
|
48
48
|
it do
|
49
|
-
form.artist.must_be_instance_of ArtistForm
|
49
|
+
_(form.artist).must_be_instance_of ArtistForm
|
50
50
|
end
|
51
51
|
|
52
52
|
describe ".properties" do
|
53
53
|
it "defines a property when called with one argument" do
|
54
|
-
form.must_respond_to :duration
|
54
|
+
_(form).must_respond_to :duration
|
55
55
|
end
|
56
56
|
|
57
57
|
it "defines several properties when called with multiple arguments" do
|
58
|
-
form.must_respond_to :year
|
59
|
-
form.must_respond_to :style
|
58
|
+
_(form).must_respond_to :year
|
59
|
+
_(form).must_respond_to :style
|
60
60
|
end
|
61
61
|
|
62
62
|
it "passes options to each property when options are provided" do
|
63
63
|
readable = AlbumForm.new(album).options_for(:style)[:readable]
|
64
|
-
readable.must_equal false
|
64
|
+
_(readable).must_equal false
|
65
65
|
end
|
66
66
|
|
67
67
|
it "returns the list of defined properties" do
|
68
68
|
returned_value = AlbumForm.properties(:hello, :world, virtual: true)
|
69
|
-
returned_value.must_equal %i[hello world]
|
69
|
+
_(returned_value).must_equal %i[hello world]
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
73
|
describe "#options_for" do
|
74
|
-
it { AlbumForm.options_for(:name).extend(Declarative::Inspect).inspect.must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
75
|
-
it { AlbumForm.new(album).options_for(:name).extend(Declarative::Inspect).inspect.must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
74
|
+
it { _(AlbumForm.options_for(:name).extend(Declarative::Inspect).inspect).must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
75
|
+
it { _(AlbumForm.new(album).options_for(:name).extend(Declarative::Inspect).inspect).must_equal "#<Disposable::Twin::Definition: @options={:private_name=>:name, :name=>\"name\"}>" }
|
76
76
|
end
|
77
77
|
end
|