assent 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +69 -5
- data/lib/assent/validator.rb +10 -2
- data/lib/assent/version.rb +1 -1
- data/spec/validator_spec.rb +28 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c0c29bf9a81d516278a384e5ecbda23491a59c3
|
4
|
+
data.tar.gz: d364f35bc2511854c46d8a2daf3ddad6d44d6b9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f486a3fb8eae727e2df5fa63daaf23cb55687c37338044af86c886702a4acfbbfcc875358ae429583d97d424873198fce28e3f44800ac0b60c7704c8f2fca97
|
7
|
+
data.tar.gz: 224178c48484dac53302fe4800aff637f1d417a7954ba015b0ae1a659c24661f2c3f76fd07e195d32cfe3e5b0b125f3b4e2d8056347342eaee85ae186da22d74
|
data/README.md
CHANGED
@@ -26,24 +26,88 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
**NOTE:** This gem is still under heavy development.
|
28
28
|
|
29
|
-
|
29
|
+
### Basic Usage
|
30
30
|
|
31
31
|
```ruby
|
32
32
|
require 'assent'
|
33
33
|
|
34
|
+
# Define a validator that inherits from the assent validator
|
34
35
|
class LoginValidator < Assent::Validator
|
35
36
|
|
36
37
|
field :email, presence: true
|
37
38
|
field :password, presence: true
|
38
39
|
end
|
40
|
+
|
41
|
+
# instantiate a new instance of the LoginValidator, f.e. in your controller
|
42
|
+
class LoginController < ApplicationController
|
43
|
+
def index
|
44
|
+
validator = LoginValidator.new
|
45
|
+
if validator.validate(params) #this will return a boolean
|
46
|
+
# render something
|
47
|
+
else
|
48
|
+
#handle validation errors
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
As you can see above, the ```validate``` method accepts the input. Right now, it only accepts a ```Hash```.
|
55
|
+
|
56
|
+
#### Supported validations
|
57
|
+
|
58
|
+
* presence
|
59
|
+
* accepted
|
60
|
+
* date
|
61
|
+
* ip
|
62
|
+
|
63
|
+
### Accessing errors
|
64
|
+
|
65
|
+
If the validation failed, you might want to show what went wrong. In that case you can access the errors as follows:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
|
69
|
+
class LoginValidator < Assent::Validator
|
70
|
+
|
71
|
+
field :email, presence: true
|
72
|
+
field :password, presence: true
|
73
|
+
end
|
74
|
+
|
75
|
+
input = Hash.new
|
76
|
+
input[:email] = ''
|
77
|
+
|
78
|
+
validator = LoginValidator.new
|
79
|
+
validator.validate(input)
|
80
|
+
validator.errors # This will return {:email => ['The email is required']}
|
39
81
|
```
|
40
82
|
|
41
|
-
## Development
|
42
83
|
|
43
|
-
|
44
|
-
|
84
|
+
### Setting custom error messages
|
85
|
+
|
86
|
+
You might want to create your own error messages and luckily you can override the defaults. All you need to do is creating a YAML language file and tell us where to find it.
|
87
|
+
|
88
|
+
Inside the YAML file you have access to the ```field``` variable. This variable will automatically be replaced with the field the validation is for.
|
89
|
+
|
90
|
+
The YAML file should look like this:
|
91
|
+
|
92
|
+
```yaml
|
93
|
+
presence: This is my custom message for :field
|
94
|
+
```
|
45
95
|
|
46
|
-
|
96
|
+
Supported overrides are:
|
97
|
+
|
98
|
+
* presence
|
99
|
+
* accepted
|
100
|
+
* date
|
101
|
+
* ip
|
102
|
+
|
103
|
+
To load your configuration file, just use the ```config_file``` method on ```Assent::Config```:
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
#some place where your configuration lives
|
107
|
+
|
108
|
+
Assent::Config.config_file 'path/to/yaml/file'
|
109
|
+
|
110
|
+
```
|
47
111
|
|
48
112
|
## Contributing
|
49
113
|
|
data/lib/assent/validator.rb
CHANGED
@@ -10,17 +10,25 @@ module Assent
|
|
10
10
|
include Options
|
11
11
|
include Config
|
12
12
|
|
13
|
-
def
|
13
|
+
def errors_class
|
14
14
|
@errors ||= Errors.new
|
15
15
|
end
|
16
16
|
|
17
|
+
def errors
|
18
|
+
errors_class.errors
|
19
|
+
end
|
20
|
+
|
21
|
+
# This validate method will validate the input against the rules. At the end it returns true or false.
|
22
|
+
# If the errors are empty, it means the validation passed
|
17
23
|
def validate(input)
|
18
24
|
@@validations.each do |field, validations|
|
19
25
|
value = input[field]
|
20
26
|
value = input[field].to_s if value.nil?
|
21
|
-
validate = Validate.new(field, value, validations,
|
27
|
+
validate = Validate.new(field, value, validations, errors_class)
|
22
28
|
validate.validate
|
23
29
|
end
|
30
|
+
|
31
|
+
errors.empty?
|
24
32
|
end
|
25
33
|
|
26
34
|
end
|
data/lib/assent/version.rb
CHANGED
data/spec/validator_spec.rb
CHANGED
@@ -1,5 +1,33 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
class LoginValidator < Assent::Validator
|
4
|
+
field :name, presence: true
|
5
|
+
end
|
6
|
+
|
7
|
+
describe Assent::Validator do
|
8
|
+
let(:validator) { LoginValidator.new }
|
9
|
+
|
10
|
+
describe '.validate' do
|
11
|
+
it 'validates the input against the rules and returns true when valid' do
|
12
|
+
input = Hash.new
|
13
|
+
input[:name] = 'Frank'
|
14
|
+
expect(validator.validate(input)).to eq(true)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false when the input is not valid' do
|
18
|
+
input = Hash.new
|
19
|
+
expect(validator.validate(input)).to eq(false)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'fills the errors when the input is not valid' do
|
23
|
+
input = Hash.new
|
24
|
+
validator.validate(input)
|
25
|
+
expect(validator.errors).not_to be_empty
|
26
|
+
expect(validator.errors).to eq({:name => ["The name is required."]})
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
3
31
|
describe Assent::Validate do
|
4
32
|
let(:error) { Assent::Errors.new { include Assent::Config }}
|
5
33
|
let(:validator) { Assent::Validate }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank
|
@@ -88,7 +88,7 @@ files:
|
|
88
88
|
- spec/validator_spec.rb
|
89
89
|
- spec/version_spec.rb
|
90
90
|
- test.rb
|
91
|
-
homepage: https://
|
91
|
+
homepage: https://www.github.com/frankieleef/assent
|
92
92
|
licenses:
|
93
93
|
- MIT
|
94
94
|
metadata:
|