has_validated_attributes 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/has_validated_attributes.gemspec +15 -6
- data/lib/has_validated_attributes/rspec.rb +2 -2
- data/lib/{version.rb → has_validated_attributes/version.rb} +1 -1
- data/lib/has_validated_attributes.rb +9 -7
- data/spec/{has_validate_fields_spec.rb → has_validated_attributes_spec.rb} +39 -2
- metadata +22 -9
- data/spec/db/test.sqlite3 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b49c78f2edd9a65145f09d2d4aaa2fb2f1d4a850
|
4
|
+
data.tar.gz: 7d893b2aecb8cfd6fe2be83a74010697f257bd8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38105ddb79653ec64151a094c2dda3554934aaaae7a7c448b8d58a054eb03bc1c3abe1b8c7e4898ddd6e12dbda4480329cb5070b54e0464190e955cf2b46e15d
|
7
|
+
data.tar.gz: 144bd41f8cae47e27e7bac48d6cf6d536ce4a0e07efe8255310527ad22bd1392a80b24713e133c039654ecaf9d0642b64ab5921fad6b2e9f89f1efcf7fe39b26
|
data/.gitignore
CHANGED
@@ -1,26 +1,35 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
|
5
|
+
require "has_validated_attributes/version"
|
4
6
|
|
5
7
|
Gem::Specification.new do |s|
|
6
8
|
s.name = %q{has_validated_attributes}
|
7
9
|
s.version = HasValidatedAttributes::VERSION
|
10
|
+
|
8
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
12
|
s.authors = ["Kyle Ginavan"]
|
10
13
|
s.date = %q{2010-05-18}
|
11
|
-
s.homepage = "https://github.com/kylejginavan/has_validated_attributes"
|
12
|
-
s.summary = %q{Ruby on Rails gem for validate data prior to save}
|
13
14
|
s.description = %q{has_validated_attributes is a Ruby on Rails gem that lets you validate your fields.}
|
14
15
|
s.email = %q{kylejginavan@gmail.com}
|
15
|
-
s.
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
16
19
|
s.files = `git ls-files`.split("\n")
|
17
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
21
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.homepage = "https://github.com/kylejginavan/has_validated_attributes"
|
19
23
|
s.require_paths = ["lib"]
|
24
|
+
s.rubygems_version = %q{1.5.2}
|
25
|
+
s.summary = %q{Ruby on Rails gem for validate data prior to save}
|
26
|
+
# s.rubyforge_project = "has_validated_attributes"
|
27
|
+
|
20
28
|
s.add_development_dependency "rspec"
|
21
29
|
s.add_development_dependency "shoulda-matchers"
|
22
30
|
s.add_development_dependency "has_normalized_attributes", "~> 0.0", ">= 0.0.8"
|
23
31
|
s.add_development_dependency "activerecord", ">= 3.1.0"
|
24
|
-
s.add_development_dependency "sqlite3"
|
32
|
+
s.add_development_dependency "sqlite3", ">= 1.3.10"
|
25
33
|
s.add_development_dependency "database_cleaner"
|
34
|
+
s.add_development_dependency "byebug"
|
26
35
|
end
|
@@ -70,11 +70,11 @@ end
|
|
70
70
|
RSpec.shared_examples_for "email attribute" do |attr|
|
71
71
|
it { should validate_length_of(attr).is_at_most(HasValidatedAttributes.email_format[:length][:maximum]) }
|
72
72
|
|
73
|
-
["abc@example.com", "Abc@example.com", "aBC@example.com", "abc.123@example.com", "mo’reilly@example.com", "ro'sullivan@example.com"].each do |value|
|
73
|
+
["abc@example.com", "Abc@example.com", "aBC@example.com", "abc.123@example.com", "mo’reilly@example.com", "ro'sullivan@example.com", "abc@example.comar"].each do |value|
|
74
74
|
it { should allow_value(value).for(attr) }
|
75
75
|
end
|
76
76
|
|
77
|
-
["Abc.example.com", "A@b@c@example.com", "()[]\;:,<>@example.com"
|
77
|
+
["Abc.example.com", "A@b@c@example.com", "()[]\;:,<>@example.com"].each do |value|
|
78
78
|
it { should_not allow_value(value).for(attr).with_message(HasValidatedAttributes.email_format[:format][:message]) }
|
79
79
|
end
|
80
80
|
end
|
@@ -32,23 +32,25 @@ module HasValidatedAttributes
|
|
32
32
|
#loading all methods dynamically
|
33
33
|
validations :name => { :format => { :with => NO_CONTROL_CHARS_REGEX, :message => NO_CONTROL_CHARS_ERROR_MSG }, :length => {:maximum => 63}, :has_if? => true},
|
34
34
|
:safe_text => { :safe_text => true, :has_if? => true},
|
35
|
-
:username => {:length => {:within => 5..127}, :format => {:with => /\A\w[\w\.\-_@]+\z/, :message => "use only letters, numbers, and .-_@ please."}, :uniqueness => true},
|
35
|
+
:username => {:length => {:within => 5..127}, :format => {:with => /\A\w[\w\.\-_@]+\z/, :message => "use only letters, numbers, and .-_@ please."}, :uniqueness => true, :has_if? => true},
|
36
36
|
:rails_name => {:format => {:with => /\A[a-zA-Z\_]*?\z/u, :message => "should only include underscores and letters."}},
|
37
|
-
|
37
|
+
## the regex for emails comes from
|
38
|
+
## http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/
|
39
|
+
:email => {:length => {:maximum => 63}, :format => {:with => /\A(?!\.)("([^"\r\\]|\\["\r\\])*"|([-a-z0-9!#$%&'’*+\/=?^_`{|}~]|(?<!\.)\.)*)(?<!\.)@[a-z0-9][\w\.-]*[a-z0-9]\.[a-z][a-z\.]*[a-z]\z/i, :message => "should look like an email address."}, :has_if? => true},
|
38
40
|
:phone_number => {:numericality => {:greater_than_or_equal_to => 1000000000, :less_than => 10000000000, :message => 'accepts only 10 numbers and (),.- characters and must not be all 0s'}, :has_if? => true},
|
39
41
|
:phone_extension => {:numericality => {:greater_than_or_equal_to => 0, :less_than => 100000000, :message => 'accepts only numbers (0-9)'}, :has_if? => true},
|
40
|
-
:domain => {:length => {:maximum => 63}, :format => {:with => /\A(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|pro|mobi|name|aero|jobs|museum)\z/i, :message => "should look like a domain name."}},
|
42
|
+
:domain => {:length => {:maximum => 63}, :format => {:with => /\A(?:[A-Z0-9\-]+\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|pro|mobi|name|aero|jobs|museum)\z/i, :message => "should look like a domain name."}, :has_if? => true},
|
41
43
|
:zipcode => {:format => {:with => /\A\d{5}(\d{4})?\z/, :message => "must contain 5 or 9 numbers"}, :has_if? => true},
|
42
44
|
:middle_initial => {:format => {:with => /\A[a-zA-Z]{0,1}\z/u, :message => "accepts only one letter"}},
|
43
45
|
:dollar => {:format => {:with => /\A-?[0-9]{0,12}(\.[0-9]{0,2})?\z/, :message => "accepts only numeric characters, period, and negative sign"}, :numericality => {:greater_than => -1000000000000, :less_than => 1000000000000}, :allow_nil => true},
|
44
46
|
:positive_dollar => {:format => {:with => /\A[0-9]{0,12}(\.[0-9]{0,2})?\z/, :message => "accepts only numeric characters, period"}, :numericality => {:greater_than_or_equal_to => 0, :less_than => 1000000000000}, :allow_nil => true},
|
45
|
-
:percent => {:format => {:with => /\A-?[0-9]{0,3}(\.[0-9]{0,3})?\z/, :message => "accepts only numeric characters, period, negative sign, and must be equal/less/greater than +/- 100"}, :numericality => {:greater_than_or_equal_to => -100, :less_than_or_equal_to => 100} },
|
47
|
+
:percent => {:format => {:with => /\A-?[0-9]{0,3}(\.[0-9]{0,3})?\z/, :message => "accepts only numeric characters, period, negative sign, and must be equal/less/greater than +/- 100"}, :numericality => {:greater_than_or_equal_to => -100, :less_than_or_equal_to => 100}, :has_if? => true},
|
46
48
|
:positive_percent => {:format => {:with => /\A[0-9]{0,3}(\.[0-9]{0,3})?\z/, :message => "accepts only numeric characters, period, and must be equal/less than 100"}, :numericality => {:greater_than_or_equal_to => 0, :less_than_or_equal_to => 100}, :allow_nil => true},
|
47
49
|
:url => {:length => {:maximum => 255}, :format => {:with => /\A(http|https|ftp):\/\/[A-Z0-9]+([\.]{1}[a-z0-9-]{1,63})*\.[a-zA-Z]{2,5}(:[0-9]{1,5})?(\/.*)?\z/ix, :message => "web address isnt valid"}, :has_if? => true},
|
48
50
|
:social_security_number => {:length => {:is => 9}, :numericality => {:greater_than_or_equal_to => 0, :less_than => 1000000000, :message => "must be in the format 111-11-1111"}, :has_if? => true},
|
49
51
|
:taxid => {:length => {:is => 9}, :numericality => {:greater_than_or_equal_to => 9999999, :less_than => 1000000000, :message => "must be in the format 11-1111111"}, :has_if? => true},
|
50
|
-
:age => {:numericality => {:greater_than_or_equal_to => 0, :less_than_or_equal_to => 110, :message => 'must contain only 3 numbers and less than 110'}},
|
51
|
-
:number => {:numericality => {:message => "accepts only numbers (0-9)"}}
|
52
|
+
:age => {:numericality => {:greater_than_or_equal_to => 0, :less_than_or_equal_to => 110, :message => 'must contain only 3 numbers and less than 110'}, :has_if? => true},
|
53
|
+
:number => {:numericality => {:message => "accepts only numbers (0-9)"}, :has_if? => true}
|
52
54
|
|
53
55
|
included do
|
54
56
|
class_eval do
|
@@ -67,4 +69,4 @@ module HasValidatedAttributes
|
|
67
69
|
end
|
68
70
|
|
69
71
|
#include activerecord
|
70
|
-
ActiveRecord::Base.send :include, HasValidatedAttributes
|
72
|
+
ActiveRecord::Base.send :include, HasValidatedAttributes
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require "spec_helper"
|
4
|
+
require "byebug"
|
4
5
|
|
5
6
|
class Resource < ActiveRecord::Base
|
6
7
|
has_validated_attributes :name_attr => {:format => :name, :maximum_length => 10},
|
@@ -67,6 +68,42 @@ describe "HasValidatedAttributes" do
|
|
67
68
|
has_validated_ssn_attribute(:ssn_attr)
|
68
69
|
has_validated_safe_text_attribute(:safe_text_attr)
|
69
70
|
has_validated_domain_attribute(:domain_attr)
|
71
|
+
|
72
|
+
context "test validations" do
|
73
|
+
subject { Resource.new }
|
74
|
+
it { expect(subject).to be_valid }
|
75
|
+
|
76
|
+
context "email addresses" do
|
77
|
+
it { subject.email_attr = "name@example.com"; expect(subject).to be_valid }
|
78
|
+
it { subject.email_attr = "gladyce@senger.io"; expect(subject).to be_valid }
|
79
|
+
it { subject.email_attr = "herp@derp"; expect(subject).to be_invalid }
|
80
|
+
|
81
|
+
## all of the examples below come from
|
82
|
+
## http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx/
|
83
|
+
it { subject.email_attr = "NotAnEmail"; expect(subject).to be_invalid }
|
84
|
+
it { subject.email_attr = "@NotAnEmail"; expect(subject).to be_invalid }
|
85
|
+
# it { subject.email_attr = """test\\blah""@example.com"; expect(subject).to be_valid }
|
86
|
+
it { subject.email_attr = """test\blah""@example.com"; expect(subject).to be_invalid }
|
87
|
+
it { subject.email_attr = "\"test\\\rblah\"@example.com"; expect(subject).to be_valid }
|
88
|
+
it { subject.email_attr = "\"test\rblah\"@example.com"; expect(subject).to be_invalid }
|
89
|
+
# it { subject.email_attr = """test\""blah""@example.com"; expect(subject).to be_valid }, true
|
90
|
+
# it { subject.email_attr = """test""blah""@example.com"; expect(subject).to be_invalid }
|
91
|
+
it { subject.email_attr = "customer/department@example.com"; expect(subject).to be_valid }
|
92
|
+
it { subject.email_attr = "$A12345@example.com"; expect(subject).to be_valid }
|
93
|
+
it { subject.email_attr = "!def!xyz%abc@example.com"; expect(subject).to be_valid }
|
94
|
+
it { subject.email_attr = "_Yosemite.Sam@example.com"; expect(subject).to be_valid }
|
95
|
+
it { subject.email_attr = "~@example.com"; expect(subject).to be_valid }
|
96
|
+
it { subject.email_attr = ".wooly@example.com"; expect(subject).to be_invalid }
|
97
|
+
it { subject.email_attr = "wo..oly@example.com"; expect(subject).to be_invalid }
|
98
|
+
it { subject.email_attr = "pootietang.@example.com"; expect(subject).to be_invalid }
|
99
|
+
it { subject.email_attr = ".@example.com"; expect(subject).to be_invalid }
|
100
|
+
# it { subject.email_attr = """Austin@Powers""@example.com"; expect(subject).to be_valid }
|
101
|
+
it { subject.email_attr = "Ima.Fool@example.com"; expect(subject).to be_valid }
|
102
|
+
it { subject.email_attr = """Ima.Fool""@example.com"; expect(subject).to be_valid }
|
103
|
+
# it { subject.email_attr = """Ima Fool""@example.com"; expect(subject).to be_valid }
|
104
|
+
it { subject.email_attr = "Ima Fool@example.com"; expect(subject).to be_invalid }
|
105
|
+
end
|
106
|
+
end
|
70
107
|
end
|
71
108
|
end
|
72
109
|
|
@@ -80,4 +117,4 @@ describe "HasValidatedAttributes" do
|
|
80
117
|
has_validated_ssn_attribute(:ssn_attr, normalized: true)
|
81
118
|
end
|
82
119
|
end
|
83
|
-
end
|
120
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_validated_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Ginavan
|
@@ -74,6 +74,20 @@ dependencies:
|
|
74
74
|
version: 3.1.0
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: sqlite3
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 1.3.10
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 1.3.10
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: database_cleaner
|
77
91
|
requirement: !ruby/object:Gem::Requirement
|
78
92
|
requirements:
|
79
93
|
- - '>='
|
@@ -87,7 +101,7 @@ dependencies:
|
|
87
101
|
- !ruby/object:Gem::Version
|
88
102
|
version: '0'
|
89
103
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
104
|
+
name: byebug
|
91
105
|
requirement: !ruby/object:Gem::Requirement
|
92
106
|
requirements:
|
93
107
|
- - '>='
|
@@ -105,7 +119,8 @@ description: has_validated_attributes is a Ruby on Rails gem that lets you valid
|
|
105
119
|
email: kylejginavan@gmail.com
|
106
120
|
executables: []
|
107
121
|
extensions: []
|
108
|
-
extra_rdoc_files:
|
122
|
+
extra_rdoc_files:
|
123
|
+
- README.rdoc
|
109
124
|
files:
|
110
125
|
- .gitignore
|
111
126
|
- .rspec
|
@@ -116,12 +131,11 @@ files:
|
|
116
131
|
- has_validated_attributes.gemspec
|
117
132
|
- lib/has_validated_attributes.rb
|
118
133
|
- lib/has_validated_attributes/rspec.rb
|
119
|
-
- lib/version.rb
|
134
|
+
- lib/has_validated_attributes/version.rb
|
120
135
|
- spec/db/database.yml
|
121
136
|
- spec/db/schema.rb
|
122
137
|
- spec/db/test.rb
|
123
|
-
- spec/
|
124
|
-
- spec/has_validate_fields_spec.rb
|
138
|
+
- spec/has_validated_attributes_spec.rb
|
125
139
|
- spec/spec_helper.rb
|
126
140
|
- spec/test.rb
|
127
141
|
homepage: https://github.com/kylejginavan/has_validated_attributes
|
@@ -142,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
156
|
- !ruby/object:Gem::Version
|
143
157
|
version: '0'
|
144
158
|
requirements: []
|
145
|
-
rubyforge_project:
|
159
|
+
rubyforge_project:
|
146
160
|
rubygems_version: 2.0.14
|
147
161
|
signing_key:
|
148
162
|
specification_version: 4
|
@@ -151,7 +165,6 @@ test_files:
|
|
151
165
|
- spec/db/database.yml
|
152
166
|
- spec/db/schema.rb
|
153
167
|
- spec/db/test.rb
|
154
|
-
- spec/
|
155
|
-
- spec/has_validate_fields_spec.rb
|
168
|
+
- spec/has_validated_attributes_spec.rb
|
156
169
|
- spec/spec_helper.rb
|
157
170
|
- spec/test.rb
|
data/spec/db/test.sqlite3
DELETED
Binary file
|