mongoa 0.1.8 → 0.1.9
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.
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Mongoa
|
2
|
+
module MongoMapper
|
3
|
+
module Matchers
|
4
|
+
class ValidateLengthOfMatcher < ValidateBase
|
5
|
+
def initialize(attribute, length_options)
|
6
|
+
super(attribute)
|
7
|
+
|
8
|
+
if length_options[:length]
|
9
|
+
@length_options = case length_options[:length]
|
10
|
+
when Integer
|
11
|
+
{ :minimum => 0, :maximum => length_options[:length] }
|
12
|
+
when Range
|
13
|
+
{ :within => length_options[:length] }
|
14
|
+
when Hash
|
15
|
+
length_options[:length]
|
16
|
+
end
|
17
|
+
else
|
18
|
+
@length_options = length_options
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def matches?(subject)
|
23
|
+
super(subject)
|
24
|
+
if @validation
|
25
|
+
if @length_options.keys.include?(:minimum)
|
26
|
+
result = @validation.minimum == @length_options[:minimum]
|
27
|
+
return false if !result
|
28
|
+
end
|
29
|
+
|
30
|
+
if @length_options.keys.include?(:maximum)
|
31
|
+
result = @validation.maximum == @length_options[:maximum]
|
32
|
+
return false if !result
|
33
|
+
end
|
34
|
+
|
35
|
+
if @length_options.keys.include?(:within)
|
36
|
+
result = @validation.within == @length_options[:within]
|
37
|
+
return false if !result
|
38
|
+
end
|
39
|
+
true
|
40
|
+
else
|
41
|
+
return false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def description
|
46
|
+
"require #{@attribute} to be a maximum length of #{@maximum}"
|
47
|
+
end
|
48
|
+
|
49
|
+
def failure_message
|
50
|
+
"Expected #{@attribute} to be a maximum length of #{@maximum}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def negative_failure_message
|
54
|
+
"Expected #{@attribute} to not be a maximum length of #{@maximum}"
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def validation_type
|
60
|
+
"ValidatesLengthOf"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'mongoa/mongo_mapper/validations/validate_base'
|
2
2
|
require 'mongoa/mongo_mapper/validations/validate_presence_of'
|
3
3
|
require 'mongoa/mongo_mapper/validations/validate_inclusion_of'
|
4
|
+
require 'mongoa/mongo_mapper/validations/validate_length_of'
|
4
5
|
|
5
6
|
module Mongoa
|
6
7
|
module MongoMapper
|
data/mongoa.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoa}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Scott J. Tamosunas"]
|
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
"lib/mongoa/mongo_mapper/validations.rb",
|
32
32
|
"lib/mongoa/mongo_mapper/validations/validate_base.rb",
|
33
33
|
"lib/mongoa/mongo_mapper/validations/validate_inclusion_of.rb",
|
34
|
+
"lib/mongoa/mongo_mapper/validations/validate_length_of.rb",
|
34
35
|
"lib/mongoa/mongo_mapper/validations/validate_presence_of.rb",
|
35
36
|
"mongoa.gemspec",
|
36
37
|
"spec/association_matcher_spec.rb",
|
@@ -6,12 +6,14 @@ class Post
|
|
6
6
|
key :name, String
|
7
7
|
|
8
8
|
validates_presence_of :name
|
9
|
+
validates_length_of :name, :minimum => 4, :maximum => 32
|
9
10
|
end
|
10
11
|
|
11
12
|
class PostRequired
|
12
13
|
include MongoMapper::Document
|
13
14
|
|
14
|
-
key :name, String, :required => true
|
15
|
+
key :name, String, :required => true, :length => 32
|
16
|
+
key :range_name, String, :required => true, :length => 0..56
|
15
17
|
end
|
16
18
|
|
17
19
|
class Within
|
@@ -84,4 +86,58 @@ describe Mongoa::MongoMapper::Matchers do
|
|
84
86
|
end
|
85
87
|
end
|
86
88
|
end
|
89
|
+
|
90
|
+
describe "#validates_length_of or key :length => <length_options>" do
|
91
|
+
describe "validates_length_of" do
|
92
|
+
describe "maximum" do
|
93
|
+
it "should return true if the key has a validates_length of with the specified :maximum" do
|
94
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :maximum => 32)
|
95
|
+
validation.should be_matches(Post.new)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should return false if the key has a validates_length but the maximum's don't match" do
|
99
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :maximum => 25)
|
100
|
+
validation.should_not be_matches(Post.new)
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should return false if the key does not have a validates_length of" do
|
104
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:foo, :maximum => 32)
|
105
|
+
validation.should_not be_matches(Post.new)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "minimum" do
|
110
|
+
it "should return true if the key has a validates_length of with the specified :minimum" do
|
111
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :minimum => 4)
|
112
|
+
validation.should be_matches(Post.new)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should return false if the key has a validates_length of but the minimum's don't match" do
|
116
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :minimum => 2)
|
117
|
+
validation.should_not be_matches(Post.new)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should return false if the key does not have a validates_length" do
|
121
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:foo, :minimum => 32)
|
122
|
+
validation.should_not be_matches(Post.new)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe "length" do
|
128
|
+
it "should work the same as validates_length_of" do
|
129
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :length => 32)
|
130
|
+
validation.should be_matches(PostRequired.new)
|
131
|
+
|
132
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:name, :length => 25)
|
133
|
+
validation.should_not be_matches(PostRequired.new)
|
134
|
+
|
135
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:foo, :length => 32)
|
136
|
+
validation.should_not be_matches(PostRequired.new)
|
137
|
+
|
138
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateLengthOfMatcher.new(:range_name, :length => 0..56)
|
139
|
+
validation.should be_matches(PostRequired.new)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
87
143
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 9
|
9
|
+
version: 0.1.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Scott J. Tamosunas
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/mongoa/mongo_mapper/validations.rb
|
57
57
|
- lib/mongoa/mongo_mapper/validations/validate_base.rb
|
58
58
|
- lib/mongoa/mongo_mapper/validations/validate_inclusion_of.rb
|
59
|
+
- lib/mongoa/mongo_mapper/validations/validate_length_of.rb
|
59
60
|
- lib/mongoa/mongo_mapper/validations/validate_presence_of.rb
|
60
61
|
- mongoa.gemspec
|
61
62
|
- spec/association_matcher_spec.rb
|