validates_simple 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08fcb5de3cf9ef6dadd9d4c51960683c0430e58c
4
- data.tar.gz: 5e204a2105312c35704f3302b5ad7c53f0db8139
3
+ metadata.gz: bdae6f59f59eb6adb7152b99d44d0f3c678f5383
4
+ data.tar.gz: e4e789bd55ddfa84c0815e4db33596f700546c3a
5
5
  SHA512:
6
- metadata.gz: 7bdaa68f65acc4498af7b52424a47cd272fa93439bd60622f9c6f88527531bee11fa008135aa864bff5bb85d241d15e7f44e13d542322991d598e3020ae991af
7
- data.tar.gz: 60fdc95d3a5531ed5569cbc38b644ecc0d2f7e1db39d5714e5918f3ec7edecd6539015ba6c73cb554562d5ee1d71b6419429ec4c07fbeef32fbe5bb730096a7e
6
+ metadata.gz: dcdfe6efba25d6528eed3011244fb5d862346d4c964c38de0b5a842fd57b9316cf1da7027aec38d64c687a96120bfca05cd05ea3f41806b2abf1921ae75cddf0
7
+ data.tar.gz: f0b5dd8fcea22cd98b082aea5dcdfd8bb17cacd185f7b4550f40205d693a611a322077fb4bafb15db27314a54ff586749ecb19bebde32fc632142b292b895616
data/README.md CHANGED
@@ -14,6 +14,7 @@ json etc. So i am creating one.
14
14
  else
15
15
  false
16
16
  end
17
+ end
17
18
  validates(field, callback, message)
18
19
  end
19
20
  end
@@ -21,14 +22,14 @@ json etc. So i am creating one.
21
22
 
22
23
  2. It can reuse defined validations when defining one
23
24
 
24
- module Validation
25
- module Rules
26
- def validates_numericality_of(field, message='')
27
- validates_presence_of(field)
28
- validates_format_of(field, /^\d+(\.\d+)?$/
29
- end
30
- end
31
- end
25
+ module Validation
26
+ module Rules
27
+ def validates_numericality_of(field, message='')
28
+ validates_presence_of(field)
29
+ validates_format_of(field, /^\d+(\.\d+)?$/
30
+ end
31
+ end
32
+ end
32
33
 
33
34
  3. It should provide some predefined validations
34
35
  * validates_presence_of - checks if the field is present and it is not nil or empty string
@@ -37,9 +38,12 @@ json etc. So i am creating one.
37
38
  * validates_numericality_of - checks if a field is a correct number format
38
39
  * validates_greather_then - checks if a field is greather then some value
39
40
  * validates_less_then - checks if a field is less then some value
40
- * etc
41
+ * validates_length_of_within - checks if the length is in some bounds
42
+ * validates_option_in - checks if the field is one of allowed options
41
43
 
42
44
  For additional info check the specs for usage [validates simple specs](https://github.com/sirfilip/validates_simple/blob/master/spec/validation_spec.rb)
43
45
 
44
46
 
45
47
  License: MIT
48
+
49
+ [![Gem Version](https://badge.fury.io/rb/validates_simple.png)](http://badge.fury.io/rb/validates_simple)
@@ -3,5 +3,5 @@ require File.expand_path('../validation/rules', __FILE__)
3
3
  require File.expand_path('../validation/validator', __FILE__)
4
4
 
5
5
  module Validation
6
- VERSION = '0.0.3'
6
+ VERSION = '0.0.4'
7
7
  end
@@ -5,9 +5,20 @@ module Validation
5
5
  @rules << {:callback => callback, :message => Error.new(field, message)}
6
6
  end
7
7
 
8
+ def validates_presence_of_field(field, message='')
9
+ callback = lambda do |data|
10
+ if data.has_key?(field)
11
+ true
12
+ else
13
+ false
14
+ end
15
+ end
16
+ validates(field, callback, message)
17
+ end
18
+
8
19
  def validates_presence_of(field, message='')
9
20
  callback = lambda do |data|
10
- if data.has_key?(field) && data[field].to_s !~ /^\s*$/
21
+ if data.fetch(field, nil).to_s !~ /\A\s*\z/
11
22
  true
12
23
  else
13
24
  false
@@ -108,5 +119,32 @@ module Validation
108
119
  end
109
120
  validates(field, callback, message)
110
121
  end
122
+
123
+ def validates_option_in(field, options, message='')
124
+ validates_presence_of(field, message)
125
+ callback = lambda do |data|
126
+ if options.include? data[field]
127
+ true
128
+ else
129
+ false
130
+ end
131
+ end
132
+ validates(field, callback, message)
133
+ end
134
+
135
+ def validates_url_format_of(field, message='')
136
+ require 'uri'
137
+ validates_presence_of(field, message)
138
+ callback = lambda do |data|
139
+ url = URI.parse(data[field]) rescue nil
140
+ if url.nil?
141
+ false
142
+ else
143
+ true
144
+ end
145
+ end
146
+ validates(field, callback, message)
147
+ end
148
+
111
149
  end
112
150
  end
@@ -11,6 +11,16 @@ describe Validation do
11
11
  end
12
12
  end
13
13
 
14
+ describe '#validates_presence_of_field' do
15
+ it 'checks if the field is present regardless of the value' do
16
+ validator.validates_presence_of_field('a field')
17
+ validator.validate({'a field' => false}).should be_true
18
+ validator.validate({'a field' => nil}).should be_true
19
+ validator.validate({'a field' => ''}).should be_true
20
+ validator.validate({'another field' => false}).should be_false
21
+ end
22
+ end
23
+
14
24
  describe "#validates presence of" do
15
25
  it "fails if field is not inside of the hash" do
16
26
  validator.validates_presence_of('fieldname', ":field is required")
@@ -113,6 +123,23 @@ describe Validation do
113
123
  end
114
124
  end
115
125
 
126
+ describe '#validates_option_in' do
127
+ it 'checks if the option is one of the predefined' do
128
+ validator.validates_option_in('subscription', ['basic', 'premium'], 'Subscription must be basic or premium')
129
+ validator.validate({'subscription' => 'basic'}).should be_true
130
+ validator.validate({'subscription' => 'other'}).should be_false
131
+ validator.validate({'other-field' => 42}).should be_false
132
+ end
133
+ end
134
+
135
+ describe '#validates_url_format_of' do
136
+ it 'checks if the url is in a correct format' do
137
+ validator.validates_url_format_of('url', 'Url format is not allowed')
138
+ validator.validate({'url' => 'http://google.com'}).should be_true
139
+ validator.validate({'url' => 'f:||asdsdfsadf'}).should be_false
140
+ end
141
+ end
142
+
116
143
  describe 'a simple sample of successfull validation' do
117
144
  it "validates successfully" do
118
145
  validator.validates_presence_of('username', 'Username is required')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_simple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Kostovski