riot-mongoid 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +41 -0
- data/VERSION +1 -1
- data/lib/riot-mongoid.rb +1 -42
- data/lib/riot-mongoid/has_association.rb +20 -0
- data/lib/riot-mongoid/has_field.rb +23 -0
- data/lib/riot-mongoid/has_key.rb +15 -0
- data/lib/riot-mongoid/has_validation.rb +23 -0
- data/riot-mongoid.gemspec +73 -0
- data/test/has_association_test.rb +32 -0
- data/test/has_field_test.rb +33 -0
- data/test/has_key_test.rb +26 -0
- data/test/has_validation_test.rb +43 -0
- data/test/teststrap.rb +12 -2
- metadata +18 -7
- data/README.rdoc +0 -17
- data/test/riot-mongoid_test.rb +0 -68
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# riot-mongoid
|
2
|
+
|
3
|
+
Riot assertions for Mongoid
|
4
|
+
|
5
|
+
## Examples
|
6
|
+
|
7
|
+
context "Photo Model" do
|
8
|
+
|
9
|
+
context 'definition' do
|
10
|
+
setup { Photo.new }
|
11
|
+
|
12
|
+
# field associations
|
13
|
+
asserts_topic.has_field :title, :type => String
|
14
|
+
asserts_topic.has_field :caption, :type => String, :default => ""
|
15
|
+
|
16
|
+
# association assertions
|
17
|
+
asserts_topic.has_association :belongs_to_related, :account
|
18
|
+
asserts_topic.has_association :has_many_related, :comments
|
19
|
+
|
20
|
+
# validation assertions
|
21
|
+
asserts_topic.has_validation :validates_presence_of, :caption
|
22
|
+
|
23
|
+
# key assertions
|
24
|
+
asserts_topic.has_key :title, :caption
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
## Note on Patches/Pull Requests
|
30
|
+
|
31
|
+
* Fork the project.
|
32
|
+
* Make your feature addition or bug fix.
|
33
|
+
* Add tests for it. This is important so I don't break it in a
|
34
|
+
future version unintentionally.
|
35
|
+
* Commit, do not mess with rakefile, version, or history.
|
36
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
37
|
+
* Send me a pull request. Bonus points for topic branches.
|
38
|
+
|
39
|
+
## Copyright
|
40
|
+
|
41
|
+
Copyright (c) 2010 gabrielg. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.3
|
data/lib/riot-mongoid.rb
CHANGED
@@ -1,45 +1,4 @@
|
|
1
1
|
require 'riot'
|
2
2
|
require 'mongoid'
|
3
3
|
|
4
|
-
|
5
|
-
attr_reader :accessible
|
6
|
-
end
|
7
|
-
|
8
|
-
module RiotMongoid
|
9
|
-
class HasFieldAssertion < Riot::AssertionMacro
|
10
|
-
register :has_field
|
11
|
-
|
12
|
-
def evaluate(model, *macro_info)
|
13
|
-
field_name, options = macro_info
|
14
|
-
field = model.fields[field_name.to_s]
|
15
|
-
if options.nil? || options.empty?
|
16
|
-
fail("field options must be specified with this assertion macro")
|
17
|
-
elsif field.nil?
|
18
|
-
fail("expected #{model} to have field #{field_name}")
|
19
|
-
else
|
20
|
-
options_valid = options.all? { |key,value| field.send(key) == value }
|
21
|
-
options_valid ? pass("#{model} has field '#{field_name}' with options #{options.inspect}") :
|
22
|
-
fail("expected model to have options #{options.inspect} on field #{field_name}")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end # HasFieldAssertion
|
26
|
-
|
27
|
-
class HasAssociationAssertion < Riot::AssertionMacro
|
28
|
-
register :has_association
|
29
|
-
|
30
|
-
def evaluate(model, *association_macro_info)
|
31
|
-
assoc_type, assoc_name, options = association_macro_info
|
32
|
-
assoc = model.associations[assoc_name.to_s]
|
33
|
-
options ||= {}
|
34
|
-
if assoc_name.nil?
|
35
|
-
fail("association name and potential options must be specified with this assertion macro")
|
36
|
-
elsif assoc.nil? || assoc.macro != assoc_type.to_sym
|
37
|
-
fail("expected #{model} to have association #{assoc_name} of type #{assoc_type}")
|
38
|
-
else
|
39
|
-
options_valid = options.all? { |key,value| assoc.send(key) == value }
|
40
|
-
options_valid ? pass("#{model} has '#{assoc_type}' association '#{assoc_name}' with options #{options.inspect}") :
|
41
|
-
fail("expected model to have options #{options.inspect} on association #{assoc_name}")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end # HasAssociationAssertion
|
45
|
-
end # RiotMongoid
|
4
|
+
Dir[File.dirname(__FILE__) + '/riot-mongoid/*.rb'].each {|file| require file }
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RiotMongoid
|
2
|
+
class HasAssociationAssertion < Riot::AssertionMacro
|
3
|
+
register :has_association
|
4
|
+
|
5
|
+
def evaluate(model, *association_macro_info)
|
6
|
+
assoc_type, assoc_name, options = association_macro_info
|
7
|
+
assoc = model.associations[assoc_name.to_s]
|
8
|
+
options ||= {}
|
9
|
+
if assoc_name.nil?
|
10
|
+
fail("association name and potential options must be specified with this assertion macro")
|
11
|
+
elsif assoc.nil? || assoc.macro != assoc_type.to_sym
|
12
|
+
fail("expected #{model} to have association #{assoc_name} of type #{assoc_type}")
|
13
|
+
else
|
14
|
+
options_valid = options.all? { |key,value| assoc.send(key) == value }
|
15
|
+
options_valid ? pass("#{model} has '#{assoc_type}' association '#{assoc_name}' with options #{options.inspect}") :
|
16
|
+
fail("expected model to have options #{options.inspect} on association #{assoc_name}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Mongoid::Field.module_eval do
|
2
|
+
attr_reader :accessible
|
3
|
+
end
|
4
|
+
|
5
|
+
module RiotMongoid
|
6
|
+
class HasFieldAssertion < Riot::AssertionMacro
|
7
|
+
register :has_field
|
8
|
+
|
9
|
+
def evaluate(model, *macro_info)
|
10
|
+
field_name, options = macro_info
|
11
|
+
field = model.fields[field_name.to_s]
|
12
|
+
if options.nil? || options.empty?
|
13
|
+
fail("field options must be specified with this assertion macro")
|
14
|
+
elsif field.nil?
|
15
|
+
fail("expected #{model} to have field #{field_name}")
|
16
|
+
else
|
17
|
+
options_valid = options.all? { |key,value| field.send(key) == value }
|
18
|
+
options_valid ? pass("#{model} has field '#{field_name}' with options #{options.inspect}") :
|
19
|
+
fail("expected model to have options #{options.inspect} on field #{field_name}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module RiotMongoid
|
2
|
+
class HasKeyAssertion < Riot::AssertionMacro
|
3
|
+
register :has_key
|
4
|
+
|
5
|
+
def evaluate(model, *key_macro_info)
|
6
|
+
if key_macro_info.nil?
|
7
|
+
fail("keys must be specified with this assertion macro")
|
8
|
+
else
|
9
|
+
valid = key_macro_info == model.primary_key
|
10
|
+
key = key_macro_info.join('-')
|
11
|
+
valid ? pass("#{model} has key #{key}") : fail("expected #{model} to have key #{key}")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module RiotMongoid
|
2
|
+
class HasValidationAssertion < Riot::AssertionMacro
|
3
|
+
register :has_validation
|
4
|
+
|
5
|
+
def evaluate(model, *validation_macro_info)
|
6
|
+
validation_type, validation_name, options = validation_macro_info
|
7
|
+
validation = model.send(:all_validations).detect do |valid|
|
8
|
+
valid.key =~ %r{#{validation_type.to_s.camelize}} and valid.attribute == validation_name
|
9
|
+
end
|
10
|
+
options ||= {}
|
11
|
+
case
|
12
|
+
when validation_name.nil? || validation_type.nil?
|
13
|
+
fail("validation name, type and potential options must be specified with this assertion macro")
|
14
|
+
when validation.nil?
|
15
|
+
fail("expected #{model} to have validation on #{validation_name} of type #{validation_type}")
|
16
|
+
else
|
17
|
+
options_valid = options.all? { |key,value| validation.send(key) == value }
|
18
|
+
options_valid ? pass("#{model} has '#{validation_type}' validation '#{validation_name}' with options #{options.inspect}") :
|
19
|
+
fail("expected #{model} to have options #{options.inspect} on validation #{validation_type}")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{riot-mongoid}
|
8
|
+
s.version = "1.1.3"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["gabrielg"]
|
12
|
+
s.date = %q{2010-06-10}
|
13
|
+
s.description = %q{A collection of assertion macros for testing Mongoid with Riot}
|
14
|
+
s.email = %q{gabriel.gironda@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.md",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/riot-mongoid.rb",
|
27
|
+
"lib/riot-mongoid/has_association.rb",
|
28
|
+
"lib/riot-mongoid/has_field.rb",
|
29
|
+
"lib/riot-mongoid/has_key.rb",
|
30
|
+
"lib/riot-mongoid/has_validation.rb",
|
31
|
+
"riot-mongoid.gemspec",
|
32
|
+
"test/has_association_test.rb",
|
33
|
+
"test/has_field_test.rb",
|
34
|
+
"test/has_key_test.rb",
|
35
|
+
"test/has_validation_test.rb",
|
36
|
+
"test/teststrap.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/gabrielg/riot-mongoid}
|
39
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.3.6}
|
42
|
+
s.summary = %q{Riot assertions for Mongoid}
|
43
|
+
s.test_files = [
|
44
|
+
"test/has_association_test.rb",
|
45
|
+
"test/has_field_test.rb",
|
46
|
+
"test/has_key_test.rb",
|
47
|
+
"test/has_validation_test.rb",
|
48
|
+
"test/teststrap.rb"
|
49
|
+
]
|
50
|
+
|
51
|
+
if s.respond_to? :specification_version then
|
52
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
53
|
+
s.specification_version = 3
|
54
|
+
|
55
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
56
|
+
s.add_development_dependency(%q<riot>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
58
|
+
s.add_runtime_dependency(%q<mongoid>, [">= 1.2.7"])
|
59
|
+
s.add_runtime_dependency(%q<riot>, [">= 0.10.12"])
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<riot>, [">= 0"])
|
62
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
63
|
+
s.add_dependency(%q<mongoid>, [">= 1.2.7"])
|
64
|
+
s.add_dependency(%q<riot>, [">= 0.10.12"])
|
65
|
+
end
|
66
|
+
else
|
67
|
+
s.add_dependency(%q<riot>, [">= 0"])
|
68
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
69
|
+
s.add_dependency(%q<mongoid>, [">= 1.2.7"])
|
70
|
+
s.add_dependency(%q<riot>, [">= 0.10.12"])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'teststrap')
|
2
|
+
|
3
|
+
context "has_association macro" do
|
4
|
+
setup do
|
5
|
+
test = mock_model do
|
6
|
+
embeds_many :things
|
7
|
+
embedded_in :another_thing, :inverse_of => :word
|
8
|
+
has_many_related :relations
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
asserts "passes when the association options are specified for a has_many" do
|
13
|
+
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :embeds_many, :things).first
|
14
|
+
end.equals(:pass)
|
15
|
+
|
16
|
+
asserts "passes when the association options are specified for a belongs_to" do
|
17
|
+
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :embedded_in, :another_thing, :inverse_of => :word).first
|
18
|
+
end.equals(:pass)
|
19
|
+
|
20
|
+
asserts "returns useful message" do
|
21
|
+
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :embedded_in, :another_thing, :inverse_of => :word).last
|
22
|
+
end.matches(/has 'embedded_in' association 'another_thing' with options \{:inverse_of=>:word\}/)
|
23
|
+
|
24
|
+
asserts "passes when the association options are specified for a has_many_related" do
|
25
|
+
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :has_many_related, :relations).first
|
26
|
+
end.equals(:pass)
|
27
|
+
|
28
|
+
asserts "fails when no association name is specified" do
|
29
|
+
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :has_many).first
|
30
|
+
end.equals(:fail)
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'teststrap')
|
2
|
+
|
3
|
+
context "has_field macro" do
|
4
|
+
setup do
|
5
|
+
mock_model do
|
6
|
+
field :name, :type => String
|
7
|
+
field :rad, :type => Boolean, :default => false
|
8
|
+
end
|
9
|
+
end
|
10
|
+
asserts "passes when the field options are specified" do
|
11
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => String).first
|
12
|
+
end.equals(:pass)
|
13
|
+
|
14
|
+
asserts "returns useful message" do
|
15
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => String).last
|
16
|
+
end.matches(/has field 'name' with options \{:type=>String\}/)
|
17
|
+
|
18
|
+
asserts "fails when the field options are not specified" do
|
19
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name).first
|
20
|
+
end.equals(:fail)
|
21
|
+
|
22
|
+
asserts "fails when invalid field options are specified" do
|
23
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => Date).first
|
24
|
+
end.equals(:fail)
|
25
|
+
|
26
|
+
asserts "passes with a slightly more complex field setup" do
|
27
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :rad, :type => Boolean, :default => false).first
|
28
|
+
end.equals(:pass)
|
29
|
+
|
30
|
+
asserts "fails with a slightly more complex field setup and a bad assertion" do
|
31
|
+
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :rad, :type => Boolean, :default => true).first
|
32
|
+
end.equals(:fail)
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'teststrap')
|
2
|
+
|
3
|
+
context "has_key macro" do
|
4
|
+
setup do
|
5
|
+
mock_model do
|
6
|
+
field :name, :type => String
|
7
|
+
field :rad, :type => Boolean, :default => false
|
8
|
+
field :surname, :type => String
|
9
|
+
|
10
|
+
key :name, :rad, :surname
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
asserts "passes when the key is specified" do
|
15
|
+
RiotMongoid::HasKeyAssertion.new.evaluate(topic, :name, :rad, :surname).first
|
16
|
+
end.equals(:pass)
|
17
|
+
|
18
|
+
asserts "fails when the key doesn't match" do
|
19
|
+
RiotMongoid::HasKeyAssertion.new.evaluate(topic, :name, :surname).first
|
20
|
+
end.equals(:fail)
|
21
|
+
|
22
|
+
asserts "returns a helpful message" do
|
23
|
+
RiotMongoid::HasKeyAssertion.new.evaluate(topic, :name, :rad, :surname).last
|
24
|
+
end.matches %r{has key name-rad-surname}
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'teststrap')
|
2
|
+
|
3
|
+
context "has_validation macro" do
|
4
|
+
setup do
|
5
|
+
mock_model do
|
6
|
+
field :name, :type => String
|
7
|
+
field :rad, :type => Boolean, :default => false
|
8
|
+
field :surname, :type => String
|
9
|
+
|
10
|
+
validates_presence_of :name, :surname
|
11
|
+
validates_length_of :surname, :within => 4..40
|
12
|
+
validates_uniqueness_of :rad
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
asserts "passes when the validation is specified" do
|
17
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_presence_of, :name).first
|
18
|
+
end.equals(:pass)
|
19
|
+
|
20
|
+
asserts "passes when the validation is specified" do
|
21
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_presence_of, :surname).first
|
22
|
+
end.equals(:pass)
|
23
|
+
|
24
|
+
asserts "returns useful message" do
|
25
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_presence_of, :name).last
|
26
|
+
end.matches(/has 'validates_presence_of' validation 'name'/)
|
27
|
+
|
28
|
+
asserts "passes when the validation options is specified" do
|
29
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_length_of, :surname, :within => 4..40).first
|
30
|
+
end.equals(:pass)
|
31
|
+
|
32
|
+
asserts "passes when the validation options is specified and doesn't match" do
|
33
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_length_of, :surname, :within => 3..30).first
|
34
|
+
end.equals(:fail)
|
35
|
+
|
36
|
+
asserts "fails when invalid field options are specified" do
|
37
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_length_of, :type => Date).first
|
38
|
+
end.equals(:fail)
|
39
|
+
|
40
|
+
asserts "passes when another validation is specified" do
|
41
|
+
RiotMongoid::HasValidationAssertion.new.evaluate(topic, :validates_uniqueness_of, :rad).first
|
42
|
+
end.equals(:pass)
|
43
|
+
end
|
data/test/teststrap.rb
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'riot'
|
3
|
-
require '
|
4
|
-
require 'mongoid'
|
3
|
+
require 'mongoid'
|
4
|
+
require File.join(File.dirname(__FILE__),'..','lib','riot-mongoid')
|
5
|
+
|
6
|
+
|
7
|
+
class Riot::Situation
|
8
|
+
def mock_model(&block)
|
9
|
+
mock = Class.new
|
10
|
+
mock.class_eval { include Mongoid::Document }
|
11
|
+
mock.class_eval(&block)
|
12
|
+
mock
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 1.1.
|
8
|
+
- 3
|
9
|
+
version: 1.1.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- gabrielg
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-06-10 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -77,16 +77,24 @@ extensions: []
|
|
77
77
|
|
78
78
|
extra_rdoc_files:
|
79
79
|
- LICENSE
|
80
|
-
- README.
|
80
|
+
- README.md
|
81
81
|
files:
|
82
82
|
- .document
|
83
83
|
- .gitignore
|
84
84
|
- LICENSE
|
85
|
-
- README.
|
85
|
+
- README.md
|
86
86
|
- Rakefile
|
87
87
|
- VERSION
|
88
88
|
- lib/riot-mongoid.rb
|
89
|
-
-
|
89
|
+
- lib/riot-mongoid/has_association.rb
|
90
|
+
- lib/riot-mongoid/has_field.rb
|
91
|
+
- lib/riot-mongoid/has_key.rb
|
92
|
+
- lib/riot-mongoid/has_validation.rb
|
93
|
+
- riot-mongoid.gemspec
|
94
|
+
- test/has_association_test.rb
|
95
|
+
- test/has_field_test.rb
|
96
|
+
- test/has_key_test.rb
|
97
|
+
- test/has_validation_test.rb
|
90
98
|
- test/teststrap.rb
|
91
99
|
has_rdoc: true
|
92
100
|
homepage: http://github.com/gabrielg/riot-mongoid
|
@@ -119,5 +127,8 @@ signing_key:
|
|
119
127
|
specification_version: 3
|
120
128
|
summary: Riot assertions for Mongoid
|
121
129
|
test_files:
|
122
|
-
- test/
|
130
|
+
- test/has_association_test.rb
|
131
|
+
- test/has_field_test.rb
|
132
|
+
- test/has_key_test.rb
|
133
|
+
- test/has_validation_test.rb
|
123
134
|
- test/teststrap.rb
|
data/README.rdoc
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
= riot-mongoid
|
2
|
-
|
3
|
-
Description goes here.
|
4
|
-
|
5
|
-
== Note on Patches/Pull Requests
|
6
|
-
|
7
|
-
* Fork the project.
|
8
|
-
* Make your feature addition or bug fix.
|
9
|
-
* Add tests for it. This is important so I don't break it in a
|
10
|
-
future version unintentionally.
|
11
|
-
* Commit, do not mess with rakefile, version, or history.
|
12
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
13
|
-
* Send me a pull request. Bonus points for topic branches.
|
14
|
-
|
15
|
-
== Copyright
|
16
|
-
|
17
|
-
Copyright (c) 2010 gabrielg. See LICENSE for details.
|
data/test/riot-mongoid_test.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'teststrap'
|
2
|
-
|
3
|
-
context "riot-mongoid" do
|
4
|
-
|
5
|
-
setup do
|
6
|
-
test_class = Class.new
|
7
|
-
test_class.class_eval do
|
8
|
-
include Mongoid::Document
|
9
|
-
field :name, :type => String
|
10
|
-
field :rad, :type => Boolean, :default => false
|
11
|
-
|
12
|
-
has_many :things
|
13
|
-
belongs_to :another_thing, :inverse_of => :word
|
14
|
-
has_many_related :relations
|
15
|
-
end
|
16
|
-
test_class
|
17
|
-
end
|
18
|
-
|
19
|
-
context "has_field" do
|
20
|
-
asserts "the macro passes when the field options are specified" do
|
21
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => String).first
|
22
|
-
end.equals(:pass)
|
23
|
-
|
24
|
-
asserts "the macro pass message is useful" do
|
25
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => String).last
|
26
|
-
end.matches(/has field 'name' with options \{:type=>String\}/)
|
27
|
-
|
28
|
-
asserts "the macro fails when the field options are not specified" do
|
29
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name).first
|
30
|
-
end.equals(:fail)
|
31
|
-
|
32
|
-
asserts "the macro fails when invalid field options are specified" do
|
33
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :name, :type => Date).first
|
34
|
-
end.equals(:fail)
|
35
|
-
|
36
|
-
asserts "the macro passes with a slightly more complex field setup" do
|
37
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :rad, :type => Boolean, :default => false).first
|
38
|
-
end.equals(:pass)
|
39
|
-
|
40
|
-
asserts "the macro fails with a slightly more complex field setup and a bad assertion" do
|
41
|
-
RiotMongoid::HasFieldAssertion.new.evaluate(topic, :rad, :type => Boolean, :default => true).first
|
42
|
-
end.equals(:fail)
|
43
|
-
end # has_field
|
44
|
-
|
45
|
-
context "has_association" do
|
46
|
-
|
47
|
-
asserts "the macro passes when the association options are specified for a has_many" do
|
48
|
-
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :has_many, :things).first
|
49
|
-
end.equals(:pass)
|
50
|
-
|
51
|
-
asserts "the macro passes when the association options are specified for a belongs_to" do
|
52
|
-
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :belongs_to, :another_thing, :inverse_of => :word).first
|
53
|
-
end.equals(:pass)
|
54
|
-
|
55
|
-
asserts "the macro pass message is useful" do
|
56
|
-
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :belongs_to, :another_thing, :inverse_of => :word).last
|
57
|
-
end.matches(/has 'belongs_to' association 'another_thing' with options \{:inverse_of=>:word\}/)
|
58
|
-
|
59
|
-
asserts "the macro passes when the association options are specified for a has_many_related" do
|
60
|
-
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :has_many_related, :relations).first
|
61
|
-
end.equals(:pass)
|
62
|
-
|
63
|
-
asserts "the macro fails when no association name is specified" do
|
64
|
-
RiotMongoid::HasAssociationAssertion.new.evaluate(topic, :has_many).first
|
65
|
-
end.equals(:fail)
|
66
|
-
|
67
|
-
end # has_association
|
68
|
-
end # riot-mongoid
|