haveapi 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +6 -6
- data/haveapi.gemspec +13 -13
- data/lib/haveapi/action.rb +140 -158
- data/lib/haveapi/action_state.rb +2 -6
- data/lib/haveapi/actions/default.rb +8 -10
- data/lib/haveapi/api.rb +2 -1
- data/lib/haveapi/authentication/base.rb +5 -8
- data/lib/haveapi/authentication/basic/provider.rb +4 -5
- data/lib/haveapi/authentication/chain.rb +19 -17
- data/lib/haveapi/authentication/oauth2/config.rb +12 -32
- data/lib/haveapi/authentication/oauth2/provider.rb +20 -30
- data/lib/haveapi/authentication/oauth2/revoke_endpoint.rb +1 -2
- data/lib/haveapi/authentication/token/action_config.rb +5 -3
- data/lib/haveapi/authentication/token/config.rb +5 -5
- data/lib/haveapi/authentication/token/provider.rb +33 -37
- data/lib/haveapi/authorization.rb +5 -4
- data/lib/haveapi/client_example.rb +11 -14
- data/lib/haveapi/client_examples/curl.rb +37 -37
- data/lib/haveapi/client_examples/fs_client.rb +29 -31
- data/lib/haveapi/client_examples/http.rb +35 -36
- data/lib/haveapi/client_examples/js_client.rb +62 -63
- data/lib/haveapi/client_examples/php_client.rb +77 -76
- data/lib/haveapi/client_examples/ruby_cli.rb +30 -30
- data/lib/haveapi/client_examples/ruby_client.rb +26 -26
- data/lib/haveapi/common.rb +3 -4
- data/lib/haveapi/context.rb +11 -10
- data/lib/haveapi/example.rb +9 -4
- data/lib/haveapi/example_list.rb +2 -2
- data/lib/haveapi/exceptions.rb +1 -1
- data/lib/haveapi/extensions/action_exceptions.rb +2 -2
- data/lib/haveapi/extensions/base.rb +1 -3
- data/lib/haveapi/extensions/exception_mailer.rb +260 -257
- data/lib/haveapi/hooks.rb +40 -39
- data/lib/haveapi/metadata.rb +1 -1
- data/lib/haveapi/model_adapter.rb +16 -27
- data/lib/haveapi/model_adapters/active_record.rb +59 -69
- data/lib/haveapi/output_formatter.rb +7 -7
- data/lib/haveapi/output_formatters/base.rb +2 -4
- data/lib/haveapi/parameters/resource.rb +7 -7
- data/lib/haveapi/parameters/typed.rb +6 -9
- data/lib/haveapi/params.rb +38 -45
- data/lib/haveapi/resource.rb +8 -8
- data/lib/haveapi/resources/action_state.rb +11 -19
- data/lib/haveapi/server.rb +102 -107
- data/lib/haveapi/spec/api_response.rb +1 -1
- data/lib/haveapi/spec/helpers.rb +1 -1
- data/lib/haveapi/spec/mock_action.rb +11 -10
- data/lib/haveapi/spec/spec_methods.rb +9 -8
- data/lib/haveapi/tasks/yard.rb +2 -2
- data/lib/haveapi/types.rb +0 -3
- data/lib/haveapi/validator.rb +6 -3
- data/lib/haveapi/validator_chain.rb +9 -8
- data/lib/haveapi/validators/acceptance.rb +6 -6
- data/lib/haveapi/validators/confirmation.rb +2 -3
- data/lib/haveapi/validators/exclusion.rb +1 -1
- data/lib/haveapi/validators/format.rb +1 -1
- data/lib/haveapi/validators/inclusion.rb +1 -1
- data/lib/haveapi/validators/length.rb +12 -11
- data/lib/haveapi/validators/numericality.rb +14 -13
- data/lib/haveapi/validators/presence.rb +4 -3
- data/lib/haveapi/version.rb +2 -2
- data/lib/haveapi.rb +2 -3
- data/spec/.rubocop.yml +4 -0
- data/spec/action/dsl_spec.rb +18 -18
- data/spec/authorization_spec.rb +8 -8
- data/spec/common_spec.rb +2 -1
- data/spec/documentation_spec.rb +2 -9
- data/spec/envelope_spec.rb +2 -2
- data/spec/hooks_spec.rb +12 -12
- data/spec/parameters/typed_spec.rb +6 -6
- data/spec/params_spec.rb +22 -24
- data/spec/resource_spec.rb +5 -7
- data/spec/spec_helper.rb +0 -1
- data/spec/validators/acceptance_spec.rb +1 -1
- data/spec/validators/confirmation_spec.rb +5 -5
- data/spec/validators/exclusion_spec.rb +3 -3
- data/spec/validators/format_spec.rb +2 -2
- data/spec/validators/inclusion_spec.rb +4 -4
- data/spec/validators/length_spec.rb +23 -23
- data/spec/validators/numericality_spec.rb +13 -13
- data/spec/validators/presence_spec.rb +3 -3
- metadata +49 -48
data/spec/params_spec.rb
CHANGED
@@ -6,7 +6,6 @@ describe HaveAPI::Params do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class Index < HaveAPI::Actions::Default::Index
|
9
|
-
|
10
9
|
end
|
11
10
|
|
12
11
|
class Show < HaveAPI::Actions::Default::Show
|
@@ -16,17 +15,16 @@ describe HaveAPI::Params do
|
|
16
15
|
end
|
17
16
|
|
18
17
|
class Create < HaveAPI::Actions::Default::Create
|
19
|
-
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
23
21
|
it 'executes all blocks' do
|
24
22
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
25
|
-
p.add_block
|
26
|
-
p.add_block
|
27
|
-
p.add_block
|
23
|
+
p.add_block proc { string :param1 }
|
24
|
+
p.add_block proc { string :param2 }
|
25
|
+
p.add_block proc { string :param3 }
|
28
26
|
p.exec
|
29
|
-
expect(p.params.map
|
27
|
+
expect(p.params.map(&:name)).to contain_exactly(*%i[param1 param2 param3])
|
30
28
|
end
|
31
29
|
|
32
30
|
it 'returns deduced singular namespace' do
|
@@ -48,43 +46,43 @@ describe HaveAPI::Params do
|
|
48
46
|
|
49
47
|
it 'uses params from parent resource' do
|
50
48
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
51
|
-
p.add_block
|
49
|
+
p.add_block proc { use :all }
|
52
50
|
p.exec
|
53
|
-
expect(p.params.map
|
51
|
+
expect(p.params.map(&:name)).to contain_exactly(*%i[res_param1 res_param2])
|
54
52
|
end
|
55
53
|
|
56
54
|
it 'has param requires' do
|
57
55
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
58
|
-
p.add_block
|
56
|
+
p.add_block proc { requires :p_required }
|
59
57
|
p.exec
|
60
58
|
expect(p.params.first.required?).to be true
|
61
59
|
end
|
62
60
|
|
63
61
|
it 'has param optional' do
|
64
62
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
65
|
-
p.add_block
|
63
|
+
p.add_block proc { optional :p_optional }
|
66
64
|
p.exec
|
67
65
|
expect(p.params.first.required?).to be false
|
68
66
|
end
|
69
67
|
|
70
68
|
it 'has param string' do
|
71
69
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
72
|
-
p.add_block
|
70
|
+
p.add_block proc { string :p_string }
|
73
71
|
p.exec
|
74
72
|
expect(p.params.first.type).to eq(String)
|
75
73
|
end
|
76
74
|
|
77
75
|
it 'has param text' do
|
78
76
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
79
|
-
p.add_block
|
77
|
+
p.add_block proc { text :p_text }
|
80
78
|
p.exec
|
81
79
|
expect(p.params.first.type).to eq(Text)
|
82
80
|
end
|
83
81
|
|
84
|
-
%i
|
82
|
+
%i[id integer foreign_key].each do |type|
|
85
83
|
it "has param #{type}" do
|
86
84
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
87
|
-
p.add_block
|
85
|
+
p.add_block proc { send(type, :"p_#{type}") }
|
88
86
|
p.exec
|
89
87
|
expect(p.params.first.type).to eq(Integer)
|
90
88
|
end
|
@@ -92,42 +90,42 @@ describe HaveAPI::Params do
|
|
92
90
|
|
93
91
|
it 'has param float' do
|
94
92
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
95
|
-
p.add_block
|
93
|
+
p.add_block proc { float :p_float }
|
96
94
|
p.exec
|
97
95
|
expect(p.params.first.type).to eq(Float)
|
98
96
|
end
|
99
97
|
|
100
98
|
it 'has param bool' do
|
101
99
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
102
|
-
p.add_block
|
100
|
+
p.add_block proc { bool :p_bool }
|
103
101
|
p.exec
|
104
102
|
expect(p.params.first.type).to eq(Boolean)
|
105
103
|
end
|
106
104
|
|
107
105
|
it 'has param datetime' do
|
108
106
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
109
|
-
p.add_block
|
107
|
+
p.add_block proc { datetime :p_datetime }
|
110
108
|
p.exec
|
111
109
|
expect(p.params.first.type).to eq(Datetime)
|
112
110
|
end
|
113
111
|
|
114
112
|
it 'has param param' do
|
115
113
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
116
|
-
p.add_block
|
114
|
+
p.add_block proc { param :p_param, type: Integer }
|
117
115
|
p.exec
|
118
116
|
expect(p.params.first.type).to eq(Integer)
|
119
117
|
end
|
120
118
|
|
121
119
|
it 'has param resource' do
|
122
120
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
123
|
-
p.add_block
|
121
|
+
p.add_block proc { resource MyResource }
|
124
122
|
p.exec
|
125
123
|
expect(p.params.first).to be_an_instance_of(HaveAPI::Parameters::Resource)
|
126
124
|
end
|
127
125
|
|
128
126
|
it 'patches params' do
|
129
127
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
130
|
-
p.add_block(
|
128
|
+
p.add_block(proc do
|
131
129
|
string :param1, label: 'Param 1'
|
132
130
|
string :param2, label: 'Param 2', desc: 'Implicit description'
|
133
131
|
end)
|
@@ -140,7 +138,7 @@ describe HaveAPI::Params do
|
|
140
138
|
|
141
139
|
it 'validates upon build' do
|
142
140
|
p = HaveAPI::Params.new(:output, MyResource::Index)
|
143
|
-
p.add_block
|
141
|
+
p.add_block proc { resource MyResource }
|
144
142
|
p.exec
|
145
143
|
expect(p.params.first).to be_an_instance_of(HaveAPI::Parameters::Resource)
|
146
144
|
expect { p.validate_build }.to raise_error(RuntimeError)
|
@@ -148,7 +146,7 @@ describe HaveAPI::Params do
|
|
148
146
|
|
149
147
|
it 'accepts valid input layout' do
|
150
148
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
151
|
-
p.add_block(
|
149
|
+
p.add_block(proc do
|
152
150
|
string :param1, required: true
|
153
151
|
string :param2
|
154
152
|
end)
|
@@ -163,7 +161,7 @@ describe HaveAPI::Params do
|
|
163
161
|
|
164
162
|
it 'rejects invalid input layout' do
|
165
163
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
166
|
-
p.add_block(
|
164
|
+
p.add_block(proc do
|
167
165
|
string :param1, required: true
|
168
166
|
string :param2
|
169
167
|
end)
|
@@ -178,7 +176,7 @@ describe HaveAPI::Params do
|
|
178
176
|
|
179
177
|
it 'indexes parameters by name' do
|
180
178
|
p = HaveAPI::Params.new(:input, MyResource::Index)
|
181
|
-
p.add_block(
|
179
|
+
p.add_block(proc do
|
182
180
|
string :param1
|
183
181
|
string :param2
|
184
182
|
end)
|
data/spec/resource_spec.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
describe HaveAPI::Resource do
|
2
2
|
class PluralTest < HaveAPI::Resource
|
3
|
-
|
4
3
|
end
|
5
4
|
|
6
5
|
class SingularTest < HaveAPI::Resource
|
@@ -21,14 +20,13 @@ describe HaveAPI::Resource do
|
|
21
20
|
end
|
22
21
|
|
23
22
|
class ComplexTest < HaveAPI::Resource
|
24
|
-
class Index < HaveAPI::Actions::Default::Index
|
25
|
-
class Show < HaveAPI::Actions::Default::Show
|
26
|
-
class Create < HaveAPI::Actions::Default::Create
|
27
|
-
class Dummy ; end
|
23
|
+
class Index < HaveAPI::Actions::Default::Index; end
|
24
|
+
class Show < HaveAPI::Actions::Default::Show; end
|
25
|
+
class Create < HaveAPI::Actions::Default::Create; end
|
28
26
|
|
29
27
|
class SubResource < HaveAPI::Resource
|
30
|
-
class Index < HaveAPI::Actions::Default::Index
|
31
|
-
class Show < HaveAPI::Actions::Default::Show
|
28
|
+
class Index < HaveAPI::Actions::Default::Index; end
|
29
|
+
class Show < HaveAPI::Actions::Default::Show; end
|
32
30
|
end
|
33
31
|
end
|
34
32
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
describe HaveAPI::Validators::Confirmation do
|
2
2
|
shared_examples(:all) do
|
3
3
|
it 'accepts the same value' do
|
4
|
-
expect(@v.validate('foo', {other_param: 'foo'})).to be true
|
4
|
+
expect(@v.validate('foo', { other_param: 'foo' })).to be true
|
5
5
|
end
|
6
6
|
|
7
|
-
it
|
8
|
-
expect(@v.validate('bar', {other_param: 'foo'})).to be false
|
7
|
+
it 'rejects a different value' do
|
8
|
+
expect(@v.validate('bar', { other_param: 'foo' })).to be false
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -36,11 +36,11 @@ describe HaveAPI::Validators::Confirmation do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'rejects the same value' do
|
39
|
-
expect(@v.validate('foo', {other_param: 'foo'})).to be false
|
39
|
+
expect(@v.validate('foo', { other_param: 'foo' })).to be false
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'accepts a different value' do
|
43
|
-
expect(@v.validate('bar', {other_param: 'foo'})).to be true
|
43
|
+
expect(@v.validate('bar', { other_param: 'foo' })).to be true
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -6,7 +6,7 @@ describe HaveAPI::Validators::Exclusion do
|
|
6
6
|
expect(@v.valid?('three')).to be false
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
9
|
+
it 'accepts an unlisted value' do
|
10
10
|
expect(@v.valid?('zero')).to be true
|
11
11
|
expect(@v.valid?('four')).to be true
|
12
12
|
end
|
@@ -14,7 +14,7 @@ describe HaveAPI::Validators::Exclusion do
|
|
14
14
|
|
15
15
|
context 'short form' do
|
16
16
|
before(:each) do
|
17
|
-
@v = HaveAPI::Validators::Exclusion.new(:exclude, %w
|
17
|
+
@v = HaveAPI::Validators::Exclusion.new(:exclude, %w[one two three])
|
18
18
|
end
|
19
19
|
|
20
20
|
include_examples :all
|
@@ -23,7 +23,7 @@ describe HaveAPI::Validators::Exclusion do
|
|
23
23
|
context 'full form' do
|
24
24
|
before(:each) do
|
25
25
|
@v = HaveAPI::Validators::Exclusion.new(:exclude, {
|
26
|
-
values: %w
|
26
|
+
values: %w[one two three]
|
27
27
|
})
|
28
28
|
end
|
29
29
|
|
@@ -5,7 +5,7 @@ describe HaveAPI::Validators::Format do
|
|
5
5
|
expect(@v.valid?('aacacb')).to be true
|
6
6
|
end
|
7
7
|
|
8
|
-
it
|
8
|
+
it 'rejects a value that does not match the regexp' do
|
9
9
|
expect(@v.valid?('aacac')).to be false
|
10
10
|
expect(@v.valid?('bacacb')).to be false
|
11
11
|
expect(@v.valid?('b')).to be false
|
@@ -45,7 +45,7 @@ describe HaveAPI::Validators::Format do
|
|
45
45
|
expect(@v.valid?('aacacb')).to be false
|
46
46
|
end
|
47
47
|
|
48
|
-
it
|
48
|
+
it 'accepts a value if it does not match the regexp' do
|
49
49
|
expect(@v.valid?('aacac')).to be true
|
50
50
|
expect(@v.valid?('bacacb')).to be true
|
51
51
|
expect(@v.valid?('b')).to be true
|
@@ -6,14 +6,14 @@ describe HaveAPI::Validators::Inclusion do
|
|
6
6
|
expect(@v.valid?('three')).to be true
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
9
|
+
it 'rejects an unlisted value' do
|
10
10
|
expect(@v.valid?('zero')).to be false
|
11
11
|
expect(@v.valid?('four')).to be false
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
[
|
16
|
-
%w
|
16
|
+
%w[one two three],
|
17
17
|
{
|
18
18
|
one: 'Fancy one',
|
19
19
|
two: 'Fancy two',
|
@@ -23,7 +23,7 @@ describe HaveAPI::Validators::Inclusion do
|
|
23
23
|
context "with include as a '#{include.class}'" do
|
24
24
|
context 'short form' do
|
25
25
|
before(:each) do
|
26
|
-
@v = HaveAPI::Validators::Inclusion.new(:include, %w
|
26
|
+
@v = HaveAPI::Validators::Inclusion.new(:include, %w[one two three])
|
27
27
|
end
|
28
28
|
|
29
29
|
include_examples :all
|
@@ -32,7 +32,7 @@ describe HaveAPI::Validators::Inclusion do
|
|
32
32
|
context 'full form' do
|
33
33
|
before(:each) do
|
34
34
|
@v = HaveAPI::Validators::Inclusion.new(:include, {
|
35
|
-
values: %w
|
35
|
+
values: %w[one two three]
|
36
36
|
})
|
37
37
|
end
|
38
38
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
describe HaveAPI::Validators::Length do
|
2
2
|
it 'does not allow to mix min/max with equals' do
|
3
3
|
expect do
|
4
|
-
HaveAPI::Validators::Length.new(:length, {min: 33, equals: 42})
|
4
|
+
HaveAPI::Validators::Length.new(:length, { min: 33, equals: 42 })
|
5
5
|
end.to raise_error(RuntimeError)
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
it 'requires one of min, max or equals' do
|
9
9
|
expect do
|
10
10
|
HaveAPI::Validators::Length.new(:length, {})
|
@@ -12,34 +12,34 @@ describe HaveAPI::Validators::Length do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'checks minimum' do
|
15
|
-
v = HaveAPI::Validators::Length.new(:length, {min: 2})
|
16
|
-
expect(v.valid?('a'*1)).to be false
|
17
|
-
expect(v.valid?('a'*2)).to be true
|
18
|
-
expect(v.valid?('a'*33)).to be true
|
15
|
+
v = HaveAPI::Validators::Length.new(:length, { min: 2 })
|
16
|
+
expect(v.valid?('a' * 1)).to be false
|
17
|
+
expect(v.valid?('a' * 2)).to be true
|
18
|
+
expect(v.valid?('a' * 33)).to be true
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
it 'checks maximum' do
|
22
|
-
v = HaveAPI::Validators::Length.new(:length, {max: 5})
|
23
|
-
expect(v.valid?('a'*4)).to be true
|
24
|
-
expect(v.valid?('a'*5)).to be true
|
25
|
-
expect(v.valid?('a'*6)).to be false
|
26
|
-
expect(v.valid?('a'*11)).to be false
|
22
|
+
v = HaveAPI::Validators::Length.new(:length, { max: 5 })
|
23
|
+
expect(v.valid?('a' * 4)).to be true
|
24
|
+
expect(v.valid?('a' * 5)).to be true
|
25
|
+
expect(v.valid?('a' * 6)).to be false
|
26
|
+
expect(v.valid?('a' * 11)).to be false
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'checks range' do
|
30
|
-
v = HaveAPI::Validators::Length.new(:length, {min: 3, max: 6})
|
31
|
-
expect(v.valid?('a'*2)).to be false
|
32
|
-
expect(v.valid?('a'*3)).to be true
|
33
|
-
expect(v.valid?('a'*4)).to be true
|
34
|
-
expect(v.valid?('a'*5)).to be true
|
35
|
-
expect(v.valid?('a'*6)).to be true
|
36
|
-
expect(v.valid?('a'*7)).to be false
|
30
|
+
v = HaveAPI::Validators::Length.new(:length, { min: 3, max: 6 })
|
31
|
+
expect(v.valid?('a' * 2)).to be false
|
32
|
+
expect(v.valid?('a' * 3)).to be true
|
33
|
+
expect(v.valid?('a' * 4)).to be true
|
34
|
+
expect(v.valid?('a' * 5)).to be true
|
35
|
+
expect(v.valid?('a' * 6)).to be true
|
36
|
+
expect(v.valid?('a' * 7)).to be false
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'check a specific length' do
|
40
|
-
v = HaveAPI::Validators::Length.new(:length, {equals: 4})
|
41
|
-
expect(v.valid?('a'*2)).to be false
|
42
|
-
expect(v.valid?('a'*4)).to be true
|
43
|
-
expect(v.valid?('a'*5)).to be false
|
40
|
+
v = HaveAPI::Validators::Length.new(:length, { equals: 4 })
|
41
|
+
expect(v.valid?('a' * 2)).to be false
|
42
|
+
expect(v.valid?('a' * 4)).to be true
|
43
|
+
expect(v.valid?('a' * 5)).to be false
|
44
44
|
end
|
45
45
|
end
|
@@ -1,19 +1,19 @@
|
|
1
1
|
describe HaveAPI::Validators::Numericality do
|
2
2
|
it 'cannot be both even and odd at the same time' do
|
3
3
|
expect do
|
4
|
-
HaveAPI::Validators::Numericality.new(:number, {odd: true, even: true})
|
4
|
+
HaveAPI::Validators::Numericality.new(:number, { odd: true, even: true })
|
5
5
|
end.to raise_error(RuntimeError)
|
6
6
|
end
|
7
7
|
|
8
8
|
it 'checks minimum' do
|
9
|
-
v = HaveAPI::Validators::Numericality.new(:number, {min: 5})
|
9
|
+
v = HaveAPI::Validators::Numericality.new(:number, { min: 5 })
|
10
10
|
expect(v.valid?(4)).to be false
|
11
11
|
expect(v.valid?(5)).to be true
|
12
12
|
expect(v.valid?(6)).to be true
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it 'checks maximum' do
|
16
|
-
v = HaveAPI::Validators::Numericality.new(:number, {max: 50})
|
16
|
+
v = HaveAPI::Validators::Numericality.new(:number, { max: 50 })
|
17
17
|
expect(v.valid?(100)).to be false
|
18
18
|
expect(v.valid?(51)).to be false
|
19
19
|
expect(v.valid?(50)).to be true
|
@@ -21,16 +21,16 @@ describe HaveAPI::Validators::Numericality do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'checks that x % y = 0' do
|
24
|
-
v = HaveAPI::Validators::Numericality.new(:number, {mod: 2})
|
24
|
+
v = HaveAPI::Validators::Numericality.new(:number, { mod: 2 })
|
25
25
|
expect(v.valid?(3)).to be false
|
26
26
|
expect(v.valid?(15)).to be false
|
27
27
|
expect(v.valid?(0)).to be true
|
28
28
|
expect(v.valid?(2)).to be true
|
29
29
|
expect(v.valid?(48)).to be true
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
it 'checks that the number is in a step' do
|
33
|
-
v = HaveAPI::Validators::Numericality.new(:number, {step: 3})
|
33
|
+
v = HaveAPI::Validators::Numericality.new(:number, { step: 3 })
|
34
34
|
expect(v.valid?(4)).to be false
|
35
35
|
expect(v.valid?(14)).to be false
|
36
36
|
expect(v.valid?(0)).to be true
|
@@ -40,7 +40,7 @@ describe HaveAPI::Validators::Numericality do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'checks that the number is in a step with a minimum' do
|
43
|
-
v = HaveAPI::Validators::Numericality.new(:number, {min: 5, step: 3})
|
43
|
+
v = HaveAPI::Validators::Numericality.new(:number, { min: 5, step: 3 })
|
44
44
|
expect(v.valid?(0)).to be false
|
45
45
|
expect(v.valid?(3)).to be false
|
46
46
|
expect(v.valid?(4)).to be false
|
@@ -53,15 +53,15 @@ describe HaveAPI::Validators::Numericality do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'checks that the number is even' do
|
56
|
-
v = HaveAPI::Validators::Numericality.new(:number, {even: true})
|
56
|
+
v = HaveAPI::Validators::Numericality.new(:number, { even: true })
|
57
57
|
expect(v.valid?(1)).to be false
|
58
58
|
expect(v.valid?(3)).to be false
|
59
59
|
expect(v.valid?(0)).to be true
|
60
60
|
expect(v.valid?(2)).to be true
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
it 'checks that the number is odd' do
|
64
|
-
v = HaveAPI::Validators::Numericality.new(:number, {odd: true})
|
64
|
+
v = HaveAPI::Validators::Numericality.new(:number, { odd: true })
|
65
65
|
expect(v.valid?(1)).to be true
|
66
66
|
expect(v.valid?(3)).to be true
|
67
67
|
expect(v.valid?(0)).to be false
|
@@ -69,12 +69,12 @@ describe HaveAPI::Validators::Numericality do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it 'checks number as string' do
|
72
|
-
v = HaveAPI::Validators::Numericality.new(:number, {min: 5})
|
72
|
+
v = HaveAPI::Validators::Numericality.new(:number, { min: 5 })
|
73
73
|
expect(v.valid?('5')).to be true
|
74
74
|
end
|
75
75
|
|
76
76
|
it 'rejects a string that is not a number' do
|
77
|
-
v = HaveAPI::Validators::Numericality.new(:number, {min: 5})
|
77
|
+
v = HaveAPI::Validators::Numericality.new(:number, { min: 5 })
|
78
78
|
expect(v.valid?('abc')).to be false
|
79
79
|
end
|
80
80
|
end
|
@@ -7,7 +7,7 @@ describe HaveAPI::Validators::Presence do
|
|
7
7
|
it 'rejects a missing or empty value' do
|
8
8
|
expect(@v.valid?(nil)).to be false
|
9
9
|
expect(@v.valid?('')).to be false
|
10
|
-
expect(@v.valid?(" \t"*4)).to be false
|
10
|
+
expect(@v.valid?(" \t" * 4)).to be false
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -31,7 +31,7 @@ describe HaveAPI::Validators::Presence do
|
|
31
31
|
|
32
32
|
context 'with empty = false' do
|
33
33
|
before(:each) do
|
34
|
-
@v = HaveAPI::Validators::Presence.new(:required, {empty: true})
|
34
|
+
@v = HaveAPI::Validators::Presence.new(:required, { empty: true })
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'accepts a present value' do
|
@@ -41,7 +41,7 @@ describe HaveAPI::Validators::Presence do
|
|
41
41
|
it 'rejects a missing or an empty value' do
|
42
42
|
expect(@v.valid?(nil)).to be false
|
43
43
|
expect(@v.valid?('')).to be true
|
44
|
-
expect(@v.valid?(" \t"*4)).to be true
|
44
|
+
expect(@v.valid?(" \t" * 4)).to be true
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|