mongoa 0.1.17 → 0.2.1
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 +1 -1
- data/lib/mongoa/mongo_mapper/associations/all.rb +2 -1
- data/lib/mongoa/mongo_mapper/matchers.rb +2 -0
- data/lib/mongoa/mongo_mapper/validations/validate_format_of.rb +41 -0
- data/lib/mongoa/mongo_mapper/validations/validate_numericality_of.rb +33 -0
- data/mongoa.gemspec +9 -2
- data/spec/assoications/all_spec.rb +17 -3
- data/spec/spec_helper.rb +13 -0
- data/spec/validations/validate_exclusion_of_spec.rb +31 -0
- data/spec/validations/validate_format_of_spec.rb +36 -0
- data/spec/validations/validate_numercality_of_spec.rb +24 -0
- metadata +11 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1
|
1
|
+
0.2.1
|
@@ -4,6 +4,8 @@ require 'mongoa/mongo_mapper/validations/validate_presence_of'
|
|
4
4
|
require 'mongoa/mongo_mapper/validations/validate_inclusion_of'
|
5
5
|
require 'mongoa/mongo_mapper/validations/validate_uniqueness_of'
|
6
6
|
require 'mongoa/mongo_mapper/validations/validate_length_of'
|
7
|
+
require 'mongoa/mongo_mapper/validations/validate_format_of'
|
8
|
+
require 'mongoa/mongo_mapper/validations/validate_numericality_of'
|
7
9
|
|
8
10
|
module Mongoa
|
9
11
|
module MongoMapper
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Mongoa
|
2
|
+
module MongoMapper
|
3
|
+
module Matchers
|
4
|
+
class ValidateFormatOfMatcher < ValidateBase
|
5
|
+
def initialize(attribute)
|
6
|
+
super(attribute)
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(subject)
|
10
|
+
super(subject)
|
11
|
+
raise "The :with is a required option to be checked, but you didn't check it." if !@with
|
12
|
+
@validation.with == @with if @validation && @validation.with
|
13
|
+
end
|
14
|
+
|
15
|
+
def with(value)
|
16
|
+
raise "Can't use both with and not with" if @not_with
|
17
|
+
@with = value
|
18
|
+
self
|
19
|
+
end
|
20
|
+
|
21
|
+
def description
|
22
|
+
"require #{@attribute} to validate the format of"
|
23
|
+
end
|
24
|
+
|
25
|
+
def failure_message
|
26
|
+
"Expected #{@attribute} to validate the format of but didn't"
|
27
|
+
end
|
28
|
+
|
29
|
+
def negative_failure_message
|
30
|
+
"Expected #{@attribute} not to validate the format but did"
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def validation_type
|
36
|
+
"ValidatesFormatOf"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Mongoa
|
2
|
+
module MongoMapper
|
3
|
+
module Matchers
|
4
|
+
class ValidateNumericalityOfMatcher < ValidateBase
|
5
|
+
def initialize(attribute)
|
6
|
+
super(attribute)
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(subject)
|
10
|
+
super(subject)
|
11
|
+
end
|
12
|
+
|
13
|
+
def description
|
14
|
+
"require #{@attribute} to validate the numericality of"
|
15
|
+
end
|
16
|
+
|
17
|
+
def failure_message
|
18
|
+
"Expected #{@attribute} to validate the numericality of but didn't"
|
19
|
+
end
|
20
|
+
|
21
|
+
def negative_failure_message
|
22
|
+
"Expected #{@attribute} not to validate the numericality but did"
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def validation_type
|
28
|
+
"ValidatesNumericalityOf"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/mongoa.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoa}
|
8
|
-
s.version = "0.1
|
8
|
+
s.version = "0.2.1"
|
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"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-20}
|
13
13
|
s.description = %q{Adds the association and validation macros for Rspec in the same way Shoulda does for ActiveRecord.}
|
14
14
|
s.email = %q{tamosunas@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,16 +28,20 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/mongoa/mongo_mapper/associations/all.rb",
|
29
29
|
"lib/mongoa/mongo_mapper/matchers.rb",
|
30
30
|
"lib/mongoa/mongo_mapper/validations/validate_base.rb",
|
31
|
+
"lib/mongoa/mongo_mapper/validations/validate_format_of.rb",
|
31
32
|
"lib/mongoa/mongo_mapper/validations/validate_inclusion_of.rb",
|
32
33
|
"lib/mongoa/mongo_mapper/validations/validate_length_of.rb",
|
34
|
+
"lib/mongoa/mongo_mapper/validations/validate_numericality_of.rb",
|
33
35
|
"lib/mongoa/mongo_mapper/validations/validate_presence_of.rb",
|
34
36
|
"lib/mongoa/mongo_mapper/validations/validate_uniqueness_of.rb",
|
35
37
|
"mongoa.gemspec",
|
36
38
|
"spec/assoications/all_spec.rb",
|
37
39
|
"spec/matchers_spec.rb",
|
38
40
|
"spec/spec_helper.rb",
|
41
|
+
"spec/validations/validate_format_of_spec.rb",
|
39
42
|
"spec/validations/validate_inclusion_of_spec.rb",
|
40
43
|
"spec/validations/validate_length_of_spec.rb",
|
44
|
+
"spec/validations/validate_numercality_of_spec.rb",
|
41
45
|
"spec/validations/validate_presence_of_spec.rb",
|
42
46
|
"spec/validations/validate_uniqueness_of_spec.rb"
|
43
47
|
]
|
@@ -50,8 +54,11 @@ Gem::Specification.new do |s|
|
|
50
54
|
"spec/assoications/all_spec.rb",
|
51
55
|
"spec/matchers_spec.rb",
|
52
56
|
"spec/spec_helper.rb",
|
57
|
+
"spec/validations/validate_exclusion_of_spec.rb",
|
58
|
+
"spec/validations/validate_format_of_spec.rb",
|
53
59
|
"spec/validations/validate_inclusion_of_spec.rb",
|
54
60
|
"spec/validations/validate_length_of_spec.rb",
|
61
|
+
"spec/validations/validate_numercality_of_spec.rb",
|
55
62
|
"spec/validations/validate_presence_of_spec.rb",
|
56
63
|
"spec/validations/validate_uniqueness_of_spec.rb"
|
57
64
|
]
|
@@ -5,7 +5,7 @@ class Post
|
|
5
5
|
key :name, String
|
6
6
|
|
7
7
|
has_many :comments
|
8
|
-
has_many :
|
8
|
+
has_many :comment_w_out_fks
|
9
9
|
has_many :embedded_comment_no_specifications
|
10
10
|
end
|
11
11
|
|
@@ -29,7 +29,14 @@ class EmbeddedComment
|
|
29
29
|
belongs_to :post
|
30
30
|
end
|
31
31
|
|
32
|
-
class
|
32
|
+
class CommentWOutFk
|
33
|
+
include MongoMapper::Document
|
34
|
+
key :description, String
|
35
|
+
|
36
|
+
belongs_to :post
|
37
|
+
end
|
38
|
+
|
39
|
+
class CommentWOutFKAddedDynamicallyOnCreate
|
33
40
|
include MongoMapper::Document
|
34
41
|
key :description, String
|
35
42
|
|
@@ -70,7 +77,14 @@ describe Mongoa::MongoMapper do
|
|
70
77
|
|
71
78
|
it "should return false if the belongs_to is present but the foreign key is missing" do
|
72
79
|
matcher = Mongoa::MongoMapper::MongoAssociationMatcher.new(:belongs_to, :post)
|
73
|
-
matcher.should_not be_matches(
|
80
|
+
matcher.should_not be_matches(CommentWOutFk.new)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return false if the belongs_to is present but the foreign key exists and it's type is null (indicating that the key was added through a create dynamically and not defined on the class)" do
|
84
|
+
post = Post.create(:name => "my post")
|
85
|
+
CommentWOutFKAddedDynamicallyOnCreate.create(:description => "hello", :post => post)
|
86
|
+
matcher = Mongoa::MongoMapper::MongoAssociationMatcher.new(:belongs_to, :post)
|
87
|
+
matcher.should_not be_matches(CommentWOutFKAddedDynamicallyOnCreate.new)
|
74
88
|
end
|
75
89
|
end
|
76
90
|
|
data/spec/spec_helper.rb
CHANGED
@@ -20,6 +20,19 @@ end
|
|
20
20
|
require 'mongoa'
|
21
21
|
require File.expand_path(File.dirname(__FILE__) + '/../lib/mongoa/mongo_mapper/matchers')
|
22
22
|
|
23
|
+
class User
|
24
|
+
include MongoMapper::Document
|
25
|
+
|
26
|
+
key :name, String
|
27
|
+
key :email, String
|
28
|
+
key :years_alive, Integer
|
29
|
+
key :years_alive_numeric, Integer, :numeric => true
|
30
|
+
key :email_format, String, :format => /(\A(\s*)\Z)|(\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z)/i
|
31
|
+
|
32
|
+
validates_format_of :email, :with => /(\A(\s*)\Z)|(\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z)/i
|
33
|
+
validates_numericality_of :years_alive
|
34
|
+
end
|
35
|
+
|
23
36
|
class Post
|
24
37
|
include MongoMapper::Document
|
25
38
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Mongoa::MongoMapper do
|
4
|
+
describe "validates_exclusion_of or key not_in => :true" do
|
5
|
+
describe "#validates_exclusion_of" do
|
6
|
+
context "in" do
|
7
|
+
it "should return true if the key has a validates_exclusion_of validtion and it's value is not in the list" do
|
8
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateExclusionOfMatcher.new(:name)
|
9
|
+
validation.in(%w(admin user)).should be_matches(Post.new)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should raise an exception if the in is not specified"
|
13
|
+
# it "should return false if the key does not have a validates_presence_of validtion" do
|
14
|
+
# validation = Mongoa::MongoMapper::Matchers::ValidateExclusionOfMatcher.new(:foo)
|
15
|
+
# validation.should_not be_matches(Post.new)
|
16
|
+
# end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "not_in" do
|
22
|
+
# it "should work the same if the key is required rather than validates_presence_of" do
|
23
|
+
# validation = Mongoa::MongoMapper::Matchers::ValidateExclusionOfMatcher.new(:name)
|
24
|
+
# validation.should be_matches(PostRequired.new)
|
25
|
+
#
|
26
|
+
# validation = Mongoa::MongoMapper::Matchers::ValidateExclusionOfMatcher.new(:foo)
|
27
|
+
# validation.should_not be_matches(PostRequired.new)
|
28
|
+
# end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Mongoa::MongoMapper do
|
4
|
+
describe "validates_format_of or key format => <whatev>" do
|
5
|
+
describe "#validates_format_of" do
|
6
|
+
context "with" do
|
7
|
+
before(:each) do
|
8
|
+
@validation = Mongoa::MongoMapper::Matchers::ValidateFormatOfMatcher.new(:email)
|
9
|
+
end
|
10
|
+
it "should return true if the key has a validates_format_of validtion" do
|
11
|
+
@validation.with(/(\A(\s*)\Z)|(\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z)/i).should be_matches(User.new)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return false if the with doesn't match" do
|
15
|
+
@validation.with(/blah/i).should_not be_matches(User.new)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should raise an exception if the required option :with is not specified" do
|
19
|
+
lambda { @validation.matches?(User.new) }.should raise_error(RuntimeError)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return false if the key does not have a validates_format_of validtion" do
|
24
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateFormatOfMatcher.new(:name)
|
25
|
+
validation.with(/(\A(\s*)\Z)|(\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z)/i).should_not be_matches(User.new)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "format" do
|
30
|
+
it "should work the same if the key is format rather than validates_format_of" do
|
31
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateFormatOfMatcher.new(:email_format)
|
32
|
+
validation.with(/(\A(\s*)\Z)|(\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z)/i).should be_matches(User.new)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Mongoa::MongoMapper do
|
4
|
+
describe "validates_numericality_of or key numeric" do
|
5
|
+
describe "#validates_numericality_of" do
|
6
|
+
it "should return true if the key has a validates_numericality_of validtion" do
|
7
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateNumericalityOfMatcher.new(:years_alive)
|
8
|
+
validation.should be_matches(User.new)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return false if it doesn't have a validates_numericality_of" do
|
12
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateNumericalityOfMatcher.new(:foo)
|
13
|
+
validation.should_not be_matches(User.new)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "numeric" do
|
18
|
+
it "should work the same if the key is numeric rather than validates_numericality_of" do
|
19
|
+
validation = Mongoa::MongoMapper::Matchers::ValidateNumericalityOfMatcher.new(:years_alive_numeric)
|
20
|
+
validation.should be_matches(User.new)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 2
|
7
8
|
- 1
|
8
|
-
|
9
|
-
version: 0.1.17
|
9
|
+
version: 0.2.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Scott J. Tamosunas
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-10-20 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -53,18 +53,23 @@ files:
|
|
53
53
|
- lib/mongoa/mongo_mapper/associations/all.rb
|
54
54
|
- lib/mongoa/mongo_mapper/matchers.rb
|
55
55
|
- lib/mongoa/mongo_mapper/validations/validate_base.rb
|
56
|
+
- lib/mongoa/mongo_mapper/validations/validate_format_of.rb
|
56
57
|
- lib/mongoa/mongo_mapper/validations/validate_inclusion_of.rb
|
57
58
|
- lib/mongoa/mongo_mapper/validations/validate_length_of.rb
|
59
|
+
- lib/mongoa/mongo_mapper/validations/validate_numericality_of.rb
|
58
60
|
- lib/mongoa/mongo_mapper/validations/validate_presence_of.rb
|
59
61
|
- lib/mongoa/mongo_mapper/validations/validate_uniqueness_of.rb
|
60
62
|
- mongoa.gemspec
|
61
63
|
- spec/assoications/all_spec.rb
|
62
64
|
- spec/matchers_spec.rb
|
63
65
|
- spec/spec_helper.rb
|
66
|
+
- spec/validations/validate_format_of_spec.rb
|
64
67
|
- spec/validations/validate_inclusion_of_spec.rb
|
65
68
|
- spec/validations/validate_length_of_spec.rb
|
69
|
+
- spec/validations/validate_numercality_of_spec.rb
|
66
70
|
- spec/validations/validate_presence_of_spec.rb
|
67
71
|
- spec/validations/validate_uniqueness_of_spec.rb
|
72
|
+
- spec/validations/validate_exclusion_of_spec.rb
|
68
73
|
has_rdoc: true
|
69
74
|
homepage: http://github.com/scotttam/mongoa
|
70
75
|
licenses: []
|
@@ -101,7 +106,10 @@ test_files:
|
|
101
106
|
- spec/assoications/all_spec.rb
|
102
107
|
- spec/matchers_spec.rb
|
103
108
|
- spec/spec_helper.rb
|
109
|
+
- spec/validations/validate_exclusion_of_spec.rb
|
110
|
+
- spec/validations/validate_format_of_spec.rb
|
104
111
|
- spec/validations/validate_inclusion_of_spec.rb
|
105
112
|
- spec/validations/validate_length_of_spec.rb
|
113
|
+
- spec/validations/validate_numercality_of_spec.rb
|
106
114
|
- spec/validations/validate_presence_of_spec.rb
|
107
115
|
- spec/validations/validate_uniqueness_of_spec.rb
|