validates_simple 0.0.3 → 0.0.4

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 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