haveapi 0.20.0 → 0.21.1
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/Gemfile +1 -1
- data/Rakefile +6 -6
- data/haveapi.gemspec +13 -13
- data/lib/haveapi/action.rb +153 -167
- 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 +10 -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
|