va 0.4.0 → 0.5.0
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/Rakefile +1 -9
- data/lib/va.rb +21 -2
- data/lib/va/string_validations.rb +7 -1
- data/lib/va/version.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- data/spec/string_validations_spec.rb +20 -1
- data/spec/va_spec.rb +62 -12
- data/va.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d0577caf4e3a47e684b5ed50a7eadd0062dba64
|
4
|
+
data.tar.gz: da3184c2e7a499d83578d5a7050c172e39f721a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1359705669b65f6cf9bffd1141831bda43cceb6321e712496e1918e5ab439caf8fa1eb338fcfa98f6abb6e047d50ea45a93284f0a64502b15a137b142ef1ceb8
|
7
|
+
data.tar.gz: 68c1affaa6458dffa190234a90e595b932a2350a287aa2cb8f49df19d84449fc6939b9f685e1e0084b9ba894d28c27b3ea4d160d40b969353cfa8fe71cb37ebe
|
data/Rakefile
CHANGED
@@ -1,12 +1,4 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
|
-
|
4
|
-
arg_files = ENV["FILES"] && ENV["FILES"].split(/[\s,]+/)
|
5
|
-
all_files = Rake::FileList["./spec/**/*_spec.rb"]
|
6
|
-
files = arg_files || all_files
|
7
|
-
puts "\nRuning tests for: #{ files.join(" ") }\n\n"
|
8
|
-
|
9
|
-
system *["matest"].concat(files)
|
10
|
-
end
|
11
|
-
|
3
|
+
require "matest/spec_tasks"
|
12
4
|
task :default => :test
|
data/lib/va.rb
CHANGED
@@ -9,7 +9,11 @@ module Va
|
|
9
9
|
@attributes ||= self.class.defaults.dup
|
10
10
|
args.each do |k, v|
|
11
11
|
key = k.to_sym
|
12
|
-
|
12
|
+
if self.class.keys.include?(key)
|
13
|
+
@attributes[key] = v
|
14
|
+
elsif ! self.class.ignore_unauthorized_attributes?
|
15
|
+
raise UnauthorizedAttribute.new(key, self)
|
16
|
+
end
|
13
17
|
end
|
14
18
|
@errors = {}
|
15
19
|
@valid = validate
|
@@ -33,6 +37,14 @@ module Va
|
|
33
37
|
@valid
|
34
38
|
end
|
35
39
|
|
40
|
+
def self.ignore_unauthorized_attributes
|
41
|
+
@__ignore_unauthorized_attributes__ = true
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.ignore_unauthorized_attributes?
|
45
|
+
!! @__ignore_unauthorized_attributes__
|
46
|
+
end
|
47
|
+
|
36
48
|
private
|
37
49
|
def self.validations
|
38
50
|
@validations ||= []
|
@@ -62,7 +74,7 @@ module Va
|
|
62
74
|
|
63
75
|
def self.validate_not_nil(*attrs)
|
64
76
|
validate_multiple(*attrs) do |attr|
|
65
|
-
|
77
|
+
attr != nil
|
66
78
|
end
|
67
79
|
end
|
68
80
|
|
@@ -92,5 +104,12 @@ module Va
|
|
92
104
|
end
|
93
105
|
end
|
94
106
|
class UnknownAttribute < Exception; end
|
107
|
+
class UnauthorizedAttribute < Exception
|
108
|
+
def initialize(attr, validator)
|
109
|
+
msg = "Unauthorized attribute for '#{validator.class}': '#{attr}'"
|
110
|
+
super(msg)
|
111
|
+
end
|
112
|
+
end
|
95
113
|
class NotSpecified ; end
|
114
|
+
|
96
115
|
end
|
@@ -3,7 +3,13 @@ module StringValidations
|
|
3
3
|
|
4
4
|
def validate_string(*attrs)
|
5
5
|
validate_multiple(*attrs) do |attr|
|
6
|
-
|
6
|
+
attr.is_a?(String) || attr.nil?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def validate_string_not_empty(*attrs)
|
11
|
+
validate_multiple(*attrs) do |attr|
|
12
|
+
attr.is_a?(String) && !attr.empty?
|
7
13
|
end
|
8
14
|
end
|
9
15
|
|
data/lib/va/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -7,7 +7,7 @@ scope "string validations" do
|
|
7
7
|
class Person < Va::Validator
|
8
8
|
include StringValidations
|
9
9
|
attribute :name
|
10
|
-
|
10
|
+
|
11
11
|
validate_string(:name)
|
12
12
|
end
|
13
13
|
|
@@ -26,4 +26,23 @@ scope "string validations" do
|
|
26
26
|
@p.valid?
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
scope "string is not empty" do
|
31
|
+
class Person < Va::Validator
|
32
|
+
include StringValidations
|
33
|
+
attribute :name
|
34
|
+
|
35
|
+
validate_string_not_empty(:name)
|
36
|
+
end
|
37
|
+
|
38
|
+
spec "not empty" do
|
39
|
+
@p = Person.new(name: "Fede")
|
40
|
+
@p.valid?
|
41
|
+
end
|
42
|
+
|
43
|
+
spec "empty" do
|
44
|
+
@p = Person.new(name: "")
|
45
|
+
! @p.valid?
|
46
|
+
end
|
47
|
+
end
|
29
48
|
end
|
data/spec/va_spec.rb
CHANGED
@@ -9,8 +9,8 @@ scope do
|
|
9
9
|
scope "init" do
|
10
10
|
let(:va) { Login.new({"email" => "fede@example.com", pass: "123456"}) }
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
spec { va.email == "fede@example.com" }
|
13
|
+
spec { va.pass == "123456" }
|
14
14
|
end
|
15
15
|
|
16
16
|
scope "#attributes" do
|
@@ -23,11 +23,6 @@ scope do
|
|
23
23
|
@va = Login.new(email: "fede@example.com")
|
24
24
|
@va.attributes == { email: "fede@example.com" }
|
25
25
|
end
|
26
|
-
|
27
|
-
spec "spureous" do
|
28
|
-
@attributes = Login.new(email: "fede@example.com", i_dont_belong_here: "HELLO!").attributes
|
29
|
-
@attributes == { email: "fede@example.com" }
|
30
|
-
end
|
31
26
|
end
|
32
27
|
end
|
33
28
|
|
@@ -77,7 +72,7 @@ scope "custom validations" do
|
|
77
72
|
|
78
73
|
scope "can't validate" do
|
79
74
|
spec "invalid arguments" do
|
80
|
-
|
75
|
+
@ex = capture_exception(Va::UnknownAttribute) do
|
81
76
|
class FaceLidator < Va::Validator
|
82
77
|
attribute :face
|
83
78
|
|
@@ -85,10 +80,66 @@ scope "custom validations" do
|
|
85
80
|
true
|
86
81
|
end
|
87
82
|
end
|
88
|
-
|
89
|
-
|
83
|
+
|
84
|
+
presenter.to_whatever
|
90
85
|
end
|
86
|
+
|
87
|
+
@ex.is_a?(Va::UnknownAttribute)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
scope "raising UnauthorizedAttribute on initialization" do
|
93
|
+
class NonRaiser < Va::Validator
|
94
|
+
ignore_unauthorized_attributes
|
95
|
+
attribute :yes
|
96
|
+
end
|
97
|
+
|
98
|
+
class Raiser < Va::Validator
|
99
|
+
attribute :yes
|
100
|
+
end
|
101
|
+
|
102
|
+
spec "raising when passing one attribute" do
|
103
|
+
@ex = capture_exception(Va::UnauthorizedAttribute) do
|
104
|
+
@va = Raiser.new(no: :something)
|
105
|
+
end
|
106
|
+
|
107
|
+
@ex.is_a?(Va::UnauthorizedAttribute)
|
108
|
+
end
|
109
|
+
|
110
|
+
spec "raising when passing more than one attribute" do
|
111
|
+
@ex = capture_exception(Va::UnauthorizedAttribute) do
|
112
|
+
@va = Raiser.new(yes: :something, no: :something_else)
|
113
|
+
end
|
114
|
+
|
115
|
+
@ex.is_a?(Va::UnauthorizedAttribute)
|
116
|
+
end
|
117
|
+
|
118
|
+
spec "names the attribute name on the message" do
|
119
|
+
@ex = capture_exception(Va::UnauthorizedAttribute) do
|
120
|
+
@va = Raiser.new(attr_name: :something_else)
|
91
121
|
end
|
122
|
+
|
123
|
+
!! (@ex.message =~ /'attr_name'/)
|
124
|
+
end
|
125
|
+
|
126
|
+
spec "names the validator name on the message" do
|
127
|
+
@ex = capture_exception(Va::UnauthorizedAttribute) do
|
128
|
+
@va = Raiser.new(attr_name: :something_else)
|
129
|
+
end
|
130
|
+
|
131
|
+
!! (@ex.message =~ /'Raiser'/)
|
132
|
+
end
|
133
|
+
|
134
|
+
spec "not raising when passing one attribute" do
|
135
|
+
@va = NonRaiser.new(no: :something)
|
136
|
+
@va.valid?
|
137
|
+
end
|
138
|
+
|
139
|
+
spec "raising when passing more than one attribute" do
|
140
|
+
@va = NonRaiser.new(yes: :something, no: :something_else)
|
141
|
+
|
142
|
+
@va.valid?
|
92
143
|
end
|
93
144
|
end
|
94
145
|
|
@@ -111,14 +162,13 @@ scope "validate multiple" do
|
|
111
162
|
@va = Name.new(first: "", last: "")
|
112
163
|
! @va.valid?
|
113
164
|
end
|
114
|
-
|
165
|
+
|
115
166
|
spec "one failing" do
|
116
167
|
@va = Name.new(first: "Federico", last: "")
|
117
168
|
! @va.valid?
|
118
169
|
end
|
119
170
|
end
|
120
171
|
|
121
|
-
|
122
172
|
scope "default values" do
|
123
173
|
class MyDefaults < Va::Validator
|
124
174
|
attribute :name, default: "N/A"
|
data/va.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: va
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Federico Iachetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.6.9
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.6.9
|
55
55
|
description: Minimalistic framework agnostic Validator.
|
56
56
|
email:
|
57
57
|
- iachetti.federico@gmail.com
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.4.
|
98
|
+
rubygems_version: 2.4.8
|
99
99
|
signing_key:
|
100
100
|
specification_version: 4
|
101
101
|
summary: Minimalistic framework agnostic Validator.
|