detox 1.0.0
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +19 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +40 -0
- data/Rakefile +11 -0
- data/detox.gemspec +27 -0
- data/gemfiles/activemodel_3_2_x.gemfile +5 -0
- data/gemfiles/activemodel_4_0_x.gemfile +5 -0
- data/lib/active_model/validations/absence.rb +19 -0
- data/lib/detox.rb +11 -0
- data/lib/detox/array_validity.rb +23 -0
- data/lib/detox/locales/en.yml +21 -0
- data/lib/detox/locales/ja.yml +21 -0
- data/lib/detox/validations/all.rb +41 -0
- data/lib/detox/validations/any.rb +57 -0
- data/lib/detox/validations/ordering.rb +34 -0
- data/lib/detox/validations/possession.rb +30 -0
- data/lib/detox/validity_broker.rb +55 -0
- data/lib/detox/version.rb +4 -0
- data/spec/detox/array_validity_spec.rb +214 -0
- data/spec/detox/validations/all_absence_spec.rb +147 -0
- data/spec/detox/validations/all_acceptance_spec.rb +352 -0
- data/spec/detox/validations/all_exclusion_spec.rb +137 -0
- data/spec/detox/validations/all_format_spec.rb +351 -0
- data/spec/detox/validations/all_inclusion_spec.rb +352 -0
- data/spec/detox/validations/all_length_spec.rb +388 -0
- data/spec/detox/validations/all_numericality_spec.rb +369 -0
- data/spec/detox/validations/all_presence_spec.rb +159 -0
- data/spec/detox/validations/any_absence_spec.rb +597 -0
- data/spec/detox/validations/any_acceptance_spec.rb +597 -0
- data/spec/detox/validations/any_exclusion_spec.rb +597 -0
- data/spec/detox/validations/any_format_spec.rb +597 -0
- data/spec/detox/validations/any_inclusion_spec.rb +597 -0
- data/spec/detox/validations/any_length_spec.rb +597 -0
- data/spec/detox/validations/any_numericality_spec.rb +609 -0
- data/spec/detox/validations/any_presence_spec.rb +596 -0
- data/spec/detox/validations/any_validator_check_validity_spec.rb +126 -0
- data/spec/detox/validations/ordering_spec.rb +452 -0
- data/spec/detox/validations/possession_spec.rb +263 -0
- data/spec/detox/validity_broker_spec.rb +126 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/test_class/all_absence_test.rb +14 -0
- data/spec/test_class/all_acceptance_test.rb +27 -0
- data/spec/test_class/all_exclusion_test.rb +15 -0
- data/spec/test_class/all_format_test.rb +26 -0
- data/spec/test_class/all_inclusion_test.rb +27 -0
- data/spec/test_class/all_length_test.rb +28 -0
- data/spec/test_class/all_numericality_test.rb +33 -0
- data/spec/test_class/all_presence_test.rb +14 -0
- data/spec/test_class/any_absence_test.rb +33 -0
- data/spec/test_class/any_acceptance_test.rb +34 -0
- data/spec/test_class/any_exclusion_test.rb +34 -0
- data/spec/test_class/any_format_test.rb +34 -0
- data/spec/test_class/any_inclusion_test.rb +33 -0
- data/spec/test_class/any_length_test.rb +33 -0
- data/spec/test_class/any_numericality_test.rb +35 -0
- data/spec/test_class/any_presence_test.rb +33 -0
- data/spec/test_class/array_validity_test.rb +6 -0
- data/spec/test_class/model_base.rb +11 -0
- data/spec/test_class/ordering_test.rb +33 -0
- data/spec/test_class/possession_test.rb +22 -0
- metadata +219 -0
@@ -0,0 +1,214 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "test_class/array_validity_test"
|
4
|
+
|
5
|
+
describe Detox::ArrayValidity do
|
6
|
+
let(:test) { ArrayValidityTest.new }
|
7
|
+
|
8
|
+
describe "#convert_to_validatee" do
|
9
|
+
context "without option" do# {{{
|
10
|
+
context "when given Array" do
|
11
|
+
let(:actual) { test.convert_to_validatee(["1", nil, "2", "", "3", " "]) }
|
12
|
+
|
13
|
+
it "returns itself" do
|
14
|
+
expect(actual).to eq ["1", nil, "2", "", "3", " "]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when given Hash" do
|
19
|
+
let(:actual) { test.convert_to_validatee({ :a => "1", :b => nil, :c => "2" , :d => "", :e => "3", :f => " "}) }
|
20
|
+
|
21
|
+
it "returns Array that contains given Hash values" do
|
22
|
+
expect(actual).to eq ["1", nil, "2", "", "3", " "]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when given nil" do
|
27
|
+
let(:actual) { test.convert_to_validatee(nil) }
|
28
|
+
|
29
|
+
it "returns empty Array" do
|
30
|
+
expect(actual).to eq []
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when given other data" do
|
35
|
+
context "when data is not blank" do
|
36
|
+
let(:actual) { test.convert_to_validatee("data") }
|
37
|
+
|
38
|
+
it "returns Array that has given data only" do
|
39
|
+
expect(actual).to eq ["data"]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
context "when data is empty" do
|
43
|
+
let(:actual) { test.convert_to_validatee("") }
|
44
|
+
|
45
|
+
it "returns empty Array that has empty data only" do
|
46
|
+
expect(actual).to eq [""]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "when data is blank" do
|
50
|
+
let(:actual) { test.convert_to_validatee(" ") }
|
51
|
+
|
52
|
+
it "returns Array that has given blank data only" do
|
53
|
+
expect(actual).to eq [" "]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end# }}}
|
58
|
+
|
59
|
+
context "with ignore_nil_value option" do# {{{
|
60
|
+
let(:options) { { :ignore_nil_value => true } }
|
61
|
+
context "when given Array" do
|
62
|
+
let(:actual) { test.convert_to_validatee(["1", nil, "2", "", "3", " "], options) }
|
63
|
+
|
64
|
+
it "returns Array that removed nil" do
|
65
|
+
expect(actual).to eq ["1", "2", "", "3", " "]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when given Hash" do
|
70
|
+
let(:actual) { test.convert_to_validatee({ :a => "1", :b => nil, :c => "2" , :d => "", :e => "3", :f => " "}, options) }
|
71
|
+
|
72
|
+
it "returns Array that contains given Hash not nil values" do
|
73
|
+
expect(actual).to eq ["1", "2", "", "3", " "]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "when given nil" do
|
78
|
+
let(:actual) { test.convert_to_validatee(nil, options) }
|
79
|
+
|
80
|
+
it "returns empty Array" do
|
81
|
+
expect(actual).to eq []
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "when given other data" do
|
86
|
+
context "when data is not blank" do
|
87
|
+
let(:actual) { test.convert_to_validatee("data", options) }
|
88
|
+
|
89
|
+
it "returns Array that has given data only" do
|
90
|
+
expect(actual).to eq ["data"]
|
91
|
+
end
|
92
|
+
end
|
93
|
+
context "when data is empty" do
|
94
|
+
let(:actual) { test.convert_to_validatee("", options) }
|
95
|
+
|
96
|
+
it "returns Array that has empty data only" do
|
97
|
+
expect(actual).to eq [""]
|
98
|
+
end
|
99
|
+
end
|
100
|
+
context "when data is blank" do
|
101
|
+
let(:actual) { test.convert_to_validatee(" ", options) }
|
102
|
+
|
103
|
+
it "returns Array that has given blank data only" do
|
104
|
+
expect(actual).to eq [" "]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end# }}}
|
109
|
+
|
110
|
+
context "with ignore_blank_value option" do# {{{
|
111
|
+
let(:options) { { :ignore_blank_value => true } }
|
112
|
+
|
113
|
+
context "when given Array" do
|
114
|
+
let(:actual) { test.convert_to_validatee(["1", nil, "2", "", "3", " "], options) }
|
115
|
+
|
116
|
+
it "returns Array that removed blank values" do
|
117
|
+
expect(actual).to eq ["1", "2", "3"]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "when given Hash" do
|
122
|
+
let(:actual) { test.convert_to_validatee({ :a => "1", :b => nil, :c => "2" , :d => "", :e => "3", :f => " "}, options) }
|
123
|
+
|
124
|
+
it "returns Array that contains given Hash not blank values" do
|
125
|
+
expect(actual).to eq ["1", "2", "3"]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "when given nil" do
|
130
|
+
let(:actual) { test.convert_to_validatee(nil, options) }
|
131
|
+
|
132
|
+
it "returns empty Array" do
|
133
|
+
expect(actual).to eq []
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
context "when given other data" do
|
138
|
+
context "when data is not blank" do
|
139
|
+
let(:actual) { test.convert_to_validatee("data", options) }
|
140
|
+
|
141
|
+
it "returns Array that has given data only" do
|
142
|
+
expect(actual).to eq ["data"]
|
143
|
+
end
|
144
|
+
end
|
145
|
+
context "when data is empty" do
|
146
|
+
let(:actual) { test.convert_to_validatee("", options) }
|
147
|
+
|
148
|
+
it "returns empty Array" do
|
149
|
+
expect(actual).to eq []
|
150
|
+
end
|
151
|
+
end
|
152
|
+
context "when data is blank" do
|
153
|
+
let(:actual) { test.convert_to_validatee(" ", options) }
|
154
|
+
|
155
|
+
it "returns empty Array" do
|
156
|
+
expect(actual).to eq []
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end# }}}
|
161
|
+
|
162
|
+
context "with option that value is false" do# {{{
|
163
|
+
let(:options) { { :ignore_nil_value => false, :ignore_blank_value => false } }
|
164
|
+
|
165
|
+
context "when given Array" do
|
166
|
+
let(:actual) { test.convert_to_validatee(["1", nil, "2", "", "3", " "]) }
|
167
|
+
|
168
|
+
it "returns itself" do
|
169
|
+
expect(actual).to eq ["1", nil, "2", "", "3", " "]
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context "when given Hash" do
|
174
|
+
let(:actual) { test.convert_to_validatee({ :a => "1", :b => nil, :c => "2" , :d => "", :e => "3", :f => " "}) }
|
175
|
+
|
176
|
+
it "returns Array that contains given Hash values" do
|
177
|
+
expect(actual).to eq ["1", nil, "2", "", "3", " "]
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context "when given nil" do
|
182
|
+
let(:actual) { test.convert_to_validatee(nil) }
|
183
|
+
|
184
|
+
it "returns empty Array" do
|
185
|
+
expect(actual).to eq []
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
context "when given other data" do
|
190
|
+
context "when data is not blank" do
|
191
|
+
let(:actual) { test.convert_to_validatee("data") }
|
192
|
+
|
193
|
+
it "returns Array that has given data only" do
|
194
|
+
expect(actual).to eq ["data"]
|
195
|
+
end
|
196
|
+
end
|
197
|
+
context "when data is empty" do
|
198
|
+
let(:actual) { test.convert_to_validatee("") }
|
199
|
+
|
200
|
+
it "returns empty Array that has empty data only" do
|
201
|
+
expect(actual).to eq [""]
|
202
|
+
end
|
203
|
+
end
|
204
|
+
context "when data is not blank" do
|
205
|
+
let(:actual) { test.convert_to_validatee(" ") }
|
206
|
+
|
207
|
+
it "returns Array that has given blank data only" do
|
208
|
+
expect(actual).to eq [" "]
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end# }}}
|
213
|
+
end
|
214
|
+
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "active_support/i18n"
|
4
|
+
require "test_class/all_absence_test"
|
5
|
+
|
6
|
+
describe Detox::Validations::AllAbsenceValidator do
|
7
|
+
describe "validation result" do
|
8
|
+
let(:test) { AllAbsenceTest.new }
|
9
|
+
|
10
|
+
context "when apply to nil" do
|
11
|
+
it "is valid" do
|
12
|
+
test.values = nil
|
13
|
+
expect(test.valid?).to eq true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "when apply to Array" do
|
18
|
+
context "when apply to [] (empty)" do
|
19
|
+
it "is valid" do
|
20
|
+
test.values = []
|
21
|
+
expect(test.valid?).to eq true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
context "when apply to [nil, nil, nil] (only nil)" do
|
25
|
+
it "is valid" do
|
26
|
+
test.values = [nil, nil, nil]
|
27
|
+
expect(test.valid?).to eq true
|
28
|
+
end
|
29
|
+
end
|
30
|
+
context "when apply to [nil, '', ' '] (nil, empty, blank)" do
|
31
|
+
it "is valid" do
|
32
|
+
test.values = [nil, "", " "]
|
33
|
+
expect(test.valid?).to eq true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
context "when apply to [nil, '', ' ', '4'] (contains not blank value)" do
|
37
|
+
it "is invalid" do
|
38
|
+
test.values = [nil, "", " ", "4"]
|
39
|
+
expect(test.valid?).to eq false
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when apply to Hash" do
|
45
|
+
context "when apply to {} (empty)" do
|
46
|
+
it "is valid" do
|
47
|
+
test.values = {}
|
48
|
+
expect(test.valid?).to eq true
|
49
|
+
end
|
50
|
+
end
|
51
|
+
context "when apply to { :a => nil, :b => nil, :c => nil } (only nil)" do
|
52
|
+
it "is valid" do
|
53
|
+
test.values = { :a => nil, :b => nil, :c => nil }
|
54
|
+
expect(test.valid?).to eq true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
context "when apply to { :a => nil, :b => '', :c => ' ' } (only nil)" do
|
58
|
+
it "is valid" do
|
59
|
+
test.values = { :a => nil, :b => "", :c => " " }
|
60
|
+
expect(test.valid?).to eq true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
context "when apply to { :a => nil, :b => '', :c => ' ', :d => '4' } (contains not blank value)" do
|
64
|
+
it "is invalid" do
|
65
|
+
test.values = { :a => nil, :b => "", :c => " ", :d => "4"}
|
66
|
+
expect(test.valid?).to eq false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "error message" do
|
73
|
+
context "when without message option" do# {{{
|
74
|
+
let(:test) { AllAbsenceTest.new }
|
75
|
+
|
76
|
+
context "when valid" do
|
77
|
+
before do
|
78
|
+
test.values = [nil, "", " "]
|
79
|
+
test.valid?
|
80
|
+
end
|
81
|
+
|
82
|
+
it "has no message" do
|
83
|
+
expect(test.errors.present?).to eq false
|
84
|
+
end
|
85
|
+
end
|
86
|
+
context "when invalid" do
|
87
|
+
before do
|
88
|
+
test.values = [nil, "", "1"]
|
89
|
+
test.valid?
|
90
|
+
end
|
91
|
+
|
92
|
+
it "has 1 error message" do
|
93
|
+
expect(test.errors.empty?).to eq false
|
94
|
+
expect(test.errors.size).to eq 1
|
95
|
+
end
|
96
|
+
it "error message is associated with values attribute" do
|
97
|
+
expect(test.errors.include?(:values)).to eq true
|
98
|
+
end
|
99
|
+
it %q{error messsage is "Values can't contain not blank value"} do
|
100
|
+
expect(test.errors.full_messages.first).to eq "Values can't contain not blank value"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
context "when using i18n" do
|
104
|
+
before do
|
105
|
+
@base_locale = I18n.locale
|
106
|
+
I18n.locale = :ja
|
107
|
+
test.values = [nil, "", "1"]
|
108
|
+
test.valid?
|
109
|
+
end
|
110
|
+
after do
|
111
|
+
I18n.locale = @base_locale
|
112
|
+
end
|
113
|
+
it "error messsage is translated" do
|
114
|
+
expect(test.errors.full_messages.first).to eq "Values には空ではない値を含められません"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end# }}}
|
118
|
+
|
119
|
+
context "when given message option" do# {{{
|
120
|
+
let(:test) { AllAbsenceTestWithMessageOption.new }
|
121
|
+
|
122
|
+
context "when invalid" do
|
123
|
+
before do
|
124
|
+
test.values = [nil, "", "1"]
|
125
|
+
test.valid?
|
126
|
+
end
|
127
|
+
it "error messsage uses given message" do
|
128
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
context "when using i18n" do
|
132
|
+
before do
|
133
|
+
@base_locale = I18n.locale
|
134
|
+
I18n.locale = :ja
|
135
|
+
test.values = [nil, "", "1"]
|
136
|
+
test.valid?
|
137
|
+
end
|
138
|
+
after do
|
139
|
+
I18n.locale = @base_locale
|
140
|
+
end
|
141
|
+
it "error messsage is not translated" do
|
142
|
+
expect(test.errors.full_messages.first).to eq 'Values is invalid'
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end# }}}
|
146
|
+
end
|
147
|
+
end
|
@@ -0,0 +1,352 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "active_support/i18n"
|
4
|
+
require "test_class/all_acceptance_test"
|
5
|
+
|
6
|
+
describe Detox::Validations::AllAcceptanceValidator do
|
7
|
+
describe "validation result" do
|
8
|
+
context "when given no additional option" do# {{{
|
9
|
+
let(:test) { AllAcceptanceTest.new }
|
10
|
+
|
11
|
+
context "when apply to nil" do
|
12
|
+
it "is valid" do
|
13
|
+
test.flags = nil
|
14
|
+
expect(test.valid?).to eq true
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when apply to Array" do# {{{
|
19
|
+
context "when apply to [] (empty)" do
|
20
|
+
it "is valid" do
|
21
|
+
test.flags = []
|
22
|
+
expect(test.valid?).to eq true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context "when apply to ['1', '1', '1'] (valid flags)" do
|
26
|
+
it "is valid" do
|
27
|
+
test.flags = ["1", "1", "1"]
|
28
|
+
expect(test.valid?).to eq true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
context "when apply to ['1', '1', '4'] (contains invalid value)" do
|
32
|
+
it "is invalid" do
|
33
|
+
test.flags = ["1", "1", "4"]
|
34
|
+
expect(test.valid?).to eq false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
context "when apply to ['1', '1', nil] (contains nil)" do
|
38
|
+
it "is valid" do
|
39
|
+
test.flags = ['1', '1', nil]
|
40
|
+
expect(test.valid?).to eq true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
context "when apply to ['1', '1', ''] (contains empty)" do
|
44
|
+
it "is invalid" do
|
45
|
+
test.flags = ['1', '1', '']
|
46
|
+
expect(test.valid?).to eq false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
context "when apply to ['1', '1', ' '] (contains blank)" do
|
50
|
+
it "is invalid" do
|
51
|
+
test.flags = ['1', '1', ' ']
|
52
|
+
expect(test.valid?).to eq false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end# }}}
|
56
|
+
|
57
|
+
context "when apply to Hash" do# {{{
|
58
|
+
context "when apply to {} (empty)" do
|
59
|
+
it "is valid" do
|
60
|
+
test.flags = {}
|
61
|
+
expect(test.valid?).to eq true
|
62
|
+
end
|
63
|
+
end
|
64
|
+
context "when apply to { :a => '1', :b => '1', :c => '1' } (valid flags)" do
|
65
|
+
it "is valid" do
|
66
|
+
test.flags = { :a => '1', :b => '1', :c => '1' }
|
67
|
+
expect(test.valid?).to eq true
|
68
|
+
end
|
69
|
+
end
|
70
|
+
context "when apply to { :a => '1', :b => '1', :c => '4' } (contains invalid value)" do
|
71
|
+
it "is invalid" do
|
72
|
+
test.flags = { :a => '1', :b => '1', :c => '4' }
|
73
|
+
expect(test.valid?).to eq false
|
74
|
+
end
|
75
|
+
end
|
76
|
+
context "when apply to { :a => '1', :b => '1', :c => nil } (contains nil)" do
|
77
|
+
it "is valid" do
|
78
|
+
test.flags = { :a => '1', :b => '1', :c => nil }
|
79
|
+
expect(test.valid?).to eq true
|
80
|
+
end
|
81
|
+
end
|
82
|
+
context "when apply to { :a => '1', :b => '1', :c => '' } (contains empty)" do
|
83
|
+
it "is invalid" do
|
84
|
+
test.flags = { :a => '1', :b => '1', :c => '' }
|
85
|
+
expect(test.valid?).to eq false
|
86
|
+
end
|
87
|
+
end
|
88
|
+
context "when apply to { :a => '1', :b => '1', :c => ' ' } (contains blank)" do
|
89
|
+
it "is invalid" do
|
90
|
+
test.flags = { :a => '1', :b => '1', :c => ' ' }
|
91
|
+
expect(test.valid?).to eq false
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end# }}}
|
95
|
+
end# }}}
|
96
|
+
|
97
|
+
context "when given ignore_nil_value option" do# {{{
|
98
|
+
let(:test) { AllAcceptanceTestWithIgnoreNilValueOption.new }
|
99
|
+
|
100
|
+
context "when apply to nil" do
|
101
|
+
it "is valid" do
|
102
|
+
test.flags = nil
|
103
|
+
expect(test.valid?).to eq true
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when apply to Array" do# {{{
|
108
|
+
context "when apply to [] (empty)" do
|
109
|
+
it "is valid" do
|
110
|
+
test.flags = []
|
111
|
+
expect(test.valid?).to eq true
|
112
|
+
end
|
113
|
+
end
|
114
|
+
context "when apply to ['1', '1', '1'] (valid flags)" do
|
115
|
+
it "is valid" do
|
116
|
+
test.flags = ["1", "1", "1"]
|
117
|
+
expect(test.valid?).to eq true
|
118
|
+
end
|
119
|
+
end
|
120
|
+
context "when apply to ['1', '1', '4'] (contains invalid flags)" do
|
121
|
+
it "is invalid" do
|
122
|
+
test.flags = ["1", "1", "4"]
|
123
|
+
expect(test.valid?).to eq false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
context "when apply to ['1', '1', nil] (contains nil)" do
|
127
|
+
it "is valid" do
|
128
|
+
test.flags = ['1', '1', nil]
|
129
|
+
expect(test.valid?).to eq true
|
130
|
+
end
|
131
|
+
end
|
132
|
+
context "when apply to ['1', '1', ''] (contains empty)" do
|
133
|
+
it "is invalid" do
|
134
|
+
test.flags = ['1', '1', '']
|
135
|
+
expect(test.valid?).to eq false
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context "when apply to ['1', '1', ' '] (contains blank)" do
|
139
|
+
it "is invalid" do
|
140
|
+
test.flags = ['1', '1', ' ']
|
141
|
+
expect(test.valid?).to eq false
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end# }}}
|
145
|
+
|
146
|
+
context "when apply to Hash" do# {{{
|
147
|
+
context "when apply to {} (empty)" do
|
148
|
+
it "is valid" do
|
149
|
+
test.flags = {}
|
150
|
+
expect(test.valid?).to eq true
|
151
|
+
end
|
152
|
+
end
|
153
|
+
context "when apply to { :a => '1', :b => '1', :c => '1' } (valid flags)" do
|
154
|
+
it "is valid" do
|
155
|
+
test.flags = { :a => '1', :b => '1', :c => '1' }
|
156
|
+
expect(test.valid?).to eq true
|
157
|
+
end
|
158
|
+
end
|
159
|
+
context "when apply to { :a => '1', :b => '1', :c => '4' } (contains invalid flags)" do
|
160
|
+
it "is invalid" do
|
161
|
+
test.flags = { :a => '1', :b => '1', :c => '4' }
|
162
|
+
expect(test.valid?).to eq false
|
163
|
+
end
|
164
|
+
end
|
165
|
+
context "when apply to { :a => '1', :b => '1', :c => nil } (contains nil)" do
|
166
|
+
it "is valid" do
|
167
|
+
test.flags = { :a => '1', :b => '1', :c => nil }
|
168
|
+
expect(test.valid?).to eq true
|
169
|
+
end
|
170
|
+
end
|
171
|
+
context "when apply to { :a => '1', :b => '1', :c => '' } (contains empty)" do
|
172
|
+
it "is invalid" do
|
173
|
+
test.flags = { :a => '1', :b => '1', :c => '' }
|
174
|
+
expect(test.valid?).to eq false
|
175
|
+
end
|
176
|
+
end
|
177
|
+
context "when apply to { :a => '1', :b => '1', :c => ' ' } (contains blank)" do
|
178
|
+
it "is invalid" do
|
179
|
+
test.flags = { :a => '1', :b => '1', :c => ' ' }
|
180
|
+
expect(test.valid?).to eq false
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end# }}}
|
184
|
+
end# }}}
|
185
|
+
|
186
|
+
context "when given ignore_blank_value option" do# {{{
|
187
|
+
let(:test) { AllAcceptanceTestWithIgnoreBlankValueOption.new }
|
188
|
+
|
189
|
+
context "when apply to nil" do
|
190
|
+
it "is valid" do
|
191
|
+
test.flags = nil
|
192
|
+
expect(test.valid?).to eq true
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when apply to Array" do# {{{
|
197
|
+
context "when apply to [] (empty)" do
|
198
|
+
it "is valid" do
|
199
|
+
test.flags = []
|
200
|
+
expect(test.valid?).to eq true
|
201
|
+
end
|
202
|
+
end
|
203
|
+
context "when apply to ['1', '1', '1'] (valid flags)" do
|
204
|
+
it "is valid" do
|
205
|
+
test.flags = ["1", "1", "1"]
|
206
|
+
expect(test.valid?).to eq true
|
207
|
+
end
|
208
|
+
end
|
209
|
+
context "when apply to ['1', '1', '4'] (contains invalid flags)" do
|
210
|
+
it "is invalid" do
|
211
|
+
test.flags = ["1", "1", "4"]
|
212
|
+
expect(test.valid?).to eq false
|
213
|
+
end
|
214
|
+
end
|
215
|
+
context "when apply to ['1', '1', nil] (contains nil)" do
|
216
|
+
it "is valid" do
|
217
|
+
test.flags = ['1', '1', nil]
|
218
|
+
expect(test.valid?).to eq true
|
219
|
+
end
|
220
|
+
end
|
221
|
+
context "when apply to ['1', '1', ''] (contains empty)" do
|
222
|
+
it "is valid" do
|
223
|
+
test.flags = ['1', '1', '']
|
224
|
+
expect(test.valid?).to eq true
|
225
|
+
end
|
226
|
+
end
|
227
|
+
context "when apply to ['1', '1', ' '] (contains blank)" do
|
228
|
+
it "is valid" do
|
229
|
+
test.flags = ['1', '1', ' ']
|
230
|
+
expect(test.valid?).to eq true
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end# }}}
|
234
|
+
|
235
|
+
context "when apply to Hash" do# {{{
|
236
|
+
context "when apply to {} (empty)" do
|
237
|
+
it "is valid" do
|
238
|
+
test.flags = {}
|
239
|
+
expect(test.valid?).to eq true
|
240
|
+
end
|
241
|
+
end
|
242
|
+
context "when apply to { :a => '1', :b => '1', :c => '1' } (valid flags)" do
|
243
|
+
it "is valid" do
|
244
|
+
test.flags = { :a => '1', :b => '1', :c => '1' }
|
245
|
+
expect(test.valid?).to eq true
|
246
|
+
end
|
247
|
+
end
|
248
|
+
context "when apply to { :a => '1', :b => '1', :c => '4' } (contains invalid flags)" do
|
249
|
+
it "is invalid" do
|
250
|
+
test.flags = { :a => '1', :b => '1', :c => '4' }
|
251
|
+
expect(test.valid?).to eq false
|
252
|
+
end
|
253
|
+
end
|
254
|
+
context "when apply to { :a => '1', :b => '1', :c => nil } (contains nil)" do
|
255
|
+
it "is valid" do
|
256
|
+
test.flags = { :a => '1', :b => '1', :c => nil }
|
257
|
+
expect(test.valid?).to eq true
|
258
|
+
end
|
259
|
+
end
|
260
|
+
context "when apply to { :a => '1', :b => '1', :c => '' } (contains empty)" do
|
261
|
+
it "is valid" do
|
262
|
+
test.flags = { :a => '1', :b => '1', :c => '' }
|
263
|
+
expect(test.valid?).to eq true
|
264
|
+
end
|
265
|
+
end
|
266
|
+
context "when apply to { :a => '1', :b => '1', :c => ' ' } (contains blank)" do
|
267
|
+
it "is valid" do
|
268
|
+
test.flags = { :a => '1', :b => '1', :c => ' ' }
|
269
|
+
expect(test.valid?).to eq true
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end# }}}
|
273
|
+
end# }}}
|
274
|
+
end
|
275
|
+
|
276
|
+
describe "error message" do
|
277
|
+
context "when without message option" do# {{{
|
278
|
+
let(:test) { AllAcceptanceTest.new }
|
279
|
+
|
280
|
+
context "when valid" do
|
281
|
+
before do
|
282
|
+
test.flags = ['1', '1', '1']
|
283
|
+
test.valid?
|
284
|
+
end
|
285
|
+
|
286
|
+
it "has no message" do
|
287
|
+
expect(test.errors.present?).to eq false
|
288
|
+
end
|
289
|
+
end
|
290
|
+
context "when invalid" do
|
291
|
+
before do
|
292
|
+
test.flags = ['1', '1', '4']
|
293
|
+
test.valid?
|
294
|
+
end
|
295
|
+
|
296
|
+
it "has 1 error message" do
|
297
|
+
expect(test.errors.empty?).to eq false
|
298
|
+
expect(test.errors.size).to eq 1
|
299
|
+
end
|
300
|
+
it "error message is associated with flags attribute" do
|
301
|
+
expect(test.errors.include?(:flags)).to eq true
|
302
|
+
end
|
303
|
+
it %q{error messsage is "Flags must be all accepted"} do
|
304
|
+
expect(test.errors.full_messages.first).to eq "Flags must be all accepted"
|
305
|
+
end
|
306
|
+
end
|
307
|
+
context "when using i18n" do
|
308
|
+
before do
|
309
|
+
@base_locale = I18n.locale
|
310
|
+
I18n.locale = :ja
|
311
|
+
test.flags = ['1', '1', '4']
|
312
|
+
test.valid?
|
313
|
+
end
|
314
|
+
after do
|
315
|
+
I18n.locale = @base_locale
|
316
|
+
end
|
317
|
+
it "error messsage is translated" do
|
318
|
+
expect(test.errors.full_messages.first).to eq "Flags を全て承諾してください"
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end# }}}
|
322
|
+
|
323
|
+
context "when given message option" do# {{{
|
324
|
+
let(:test) { AllAcceptanceTestWithMessageOption.new }
|
325
|
+
|
326
|
+
context "when invalid" do
|
327
|
+
before do
|
328
|
+
test.flags = ['1', '1', '4']
|
329
|
+
test.valid?
|
330
|
+
end
|
331
|
+
it "error messsage uses given message" do
|
332
|
+
expect(test.errors.full_messages.first).to eq 'Flags is invalid'
|
333
|
+
end
|
334
|
+
end
|
335
|
+
context "when using i18n" do
|
336
|
+
before do
|
337
|
+
@base_locale = I18n.locale
|
338
|
+
I18n.locale = :ja
|
339
|
+
test.flags = ['1', '1', '4']
|
340
|
+
test.valid?
|
341
|
+
end
|
342
|
+
after do
|
343
|
+
I18n.locale = @base_locale
|
344
|
+
end
|
345
|
+
it "error messsage is not translated" do
|
346
|
+
expect(test.errors.full_messages.first).to eq 'Flags is invalid'
|
347
|
+
end
|
348
|
+
end
|
349
|
+
end# }}}
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|