mongoid 2.0.0.alpha → 2.0.0.beta.5
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/lib/mongoid.rb +11 -5
- data/lib/mongoid/associations.rb +112 -107
- data/lib/mongoid/associations/belongs_to_related.rb +2 -3
- data/lib/mongoid/associations/embedded_in.rb +12 -4
- data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
- data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
- data/lib/mongoid/associations/has_many_related.rb +51 -5
- data/lib/mongoid/associations/has_one_related.rb +9 -5
- data/lib/mongoid/associations/meta_data.rb +2 -1
- data/lib/mongoid/associations/options.rb +15 -6
- data/lib/mongoid/associations/proxy.rb +14 -21
- data/lib/mongoid/attributes.rb +34 -13
- data/lib/mongoid/callbacks.rb +1 -2
- data/lib/mongoid/collection.rb +4 -3
- data/lib/mongoid/collections.rb +41 -0
- data/lib/mongoid/collections/master.rb +3 -2
- data/lib/mongoid/collections/slaves.rb +3 -2
- data/lib/mongoid/components.rb +4 -1
- data/lib/mongoid/config.rb +163 -13
- data/lib/mongoid/contexts.rb +1 -2
- data/lib/mongoid/contexts/enumerable.rb +1 -1
- data/lib/mongoid/contexts/mongo.rb +1 -1
- data/lib/mongoid/contexts/paging.rb +10 -2
- data/lib/mongoid/criteria.rb +13 -22
- data/lib/mongoid/criterion/exclusion.rb +3 -3
- data/lib/mongoid/criterion/inclusion.rb +17 -0
- data/lib/mongoid/criterion/optional.rb +1 -1
- data/lib/mongoid/dirty.rb +253 -0
- data/lib/mongoid/document.rb +40 -85
- data/lib/mongoid/errors.rb +48 -1
- data/lib/mongoid/extensions.rb +11 -9
- data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
- data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
- data/lib/mongoid/extensions/date/conversions.rb +13 -4
- data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
- data/lib/mongoid/extensions/float/conversions.rb +5 -1
- data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
- data/lib/mongoid/extensions/hash/conversions.rb +34 -4
- data/lib/mongoid/extensions/integer/conversions.rb +5 -1
- data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
- data/lib/mongoid/extensions/object/conversions.rb +3 -3
- data/lib/mongoid/extensions/string/conversions.rb +1 -1
- data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
- data/lib/mongoid/extensions/time_conversions.rb +35 -0
- data/lib/mongoid/factory.rb +2 -1
- data/lib/mongoid/field.rb +15 -2
- data/lib/mongoid/fields.rb +1 -1
- data/lib/mongoid/identity.rb +3 -3
- data/lib/mongoid/indexes.rb +3 -3
- data/lib/mongoid/matchers.rb +1 -2
- data/lib/mongoid/memoization.rb +8 -2
- data/lib/mongoid/named_scope.rb +0 -5
- data/lib/mongoid/observable.rb +1 -1
- data/lib/mongoid/paths.rb +30 -22
- data/lib/mongoid/persistence.rb +218 -0
- data/lib/mongoid/persistence/command.rb +39 -0
- data/lib/mongoid/persistence/insert.rb +47 -0
- data/lib/mongoid/persistence/insert_embedded.rb +38 -0
- data/lib/mongoid/persistence/remove.rb +39 -0
- data/lib/mongoid/persistence/remove_all.rb +37 -0
- data/lib/mongoid/persistence/remove_embedded.rb +50 -0
- data/lib/mongoid/persistence/update.rb +63 -0
- data/lib/mongoid/railtie.rb +53 -0
- data/lib/mongoid/railties/database.rake +37 -0
- data/lib/mongoid/timestamps.rb +2 -2
- data/lib/mongoid/validations.rb +2 -2
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/uniqueness.rb +13 -2
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +3 -2
- data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
- data/lib/rails/generators/mongoid_generator.rb +61 -0
- metadata +76 -301
- data/.gitignore +0 -6
- data/.watchr +0 -29
- data/Rakefile +0 -52
- data/VERSION +0 -1
- data/caliper.yml +0 -4
- data/lib/mongoid/collections/mimic.rb +0 -46
- data/lib/mongoid/commands.rb +0 -161
- data/lib/mongoid/commands/create.rb +0 -19
- data/lib/mongoid/commands/delete.rb +0 -16
- data/lib/mongoid/commands/delete_all.rb +0 -23
- data/lib/mongoid/commands/deletion.rb +0 -18
- data/lib/mongoid/commands/destroy.rb +0 -17
- data/lib/mongoid/commands/destroy_all.rb +0 -23
- data/lib/mongoid/commands/save.rb +0 -29
- data/lib/mongoid/extensions/time/conversions.rb +0 -18
- data/mongoid.gemspec +0 -408
- data/perf/benchmark.rb +0 -77
- data/spec/integration/mongoid/associations_spec.rb +0 -340
- data/spec/integration/mongoid/attributes_spec.rb +0 -22
- data/spec/integration/mongoid/commands_spec.rb +0 -227
- data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
- data/spec/integration/mongoid/criteria_spec.rb +0 -272
- data/spec/integration/mongoid/document_spec.rb +0 -650
- data/spec/integration/mongoid/extensions_spec.rb +0 -22
- data/spec/integration/mongoid/finders_spec.rb +0 -119
- data/spec/integration/mongoid/inheritance_spec.rb +0 -137
- data/spec/integration/mongoid/named_scope_spec.rb +0 -46
- data/spec/models/address.rb +0 -39
- data/spec/models/animal.rb +0 -6
- data/spec/models/callbacks.rb +0 -18
- data/spec/models/comment.rb +0 -8
- data/spec/models/country_code.rb +0 -6
- data/spec/models/employer.rb +0 -5
- data/spec/models/game.rb +0 -7
- data/spec/models/inheritance.rb +0 -56
- data/spec/models/location.rb +0 -5
- data/spec/models/mixed_drink.rb +0 -4
- data/spec/models/name.rb +0 -13
- data/spec/models/namespacing.rb +0 -11
- data/spec/models/patient.rb +0 -4
- data/spec/models/person.rb +0 -99
- data/spec/models/pet.rb +0 -7
- data/spec/models/pet_owner.rb +0 -6
- data/spec/models/phone.rb +0 -7
- data/spec/models/post.rb +0 -15
- data/spec/models/translation.rb +0 -5
- data/spec/models/vet_visit.rb +0 -5
- data/spec/spec.opts +0 -3
- data/spec/spec_helper.rb +0 -31
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
- data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
- data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
- data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
- data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
- data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
- data/spec/unit/mongoid/associations/options_spec.rb +0 -192
- data/spec/unit/mongoid/associations_spec.rb +0 -595
- data/spec/unit/mongoid/attributes_spec.rb +0 -507
- data/spec/unit/mongoid/callbacks_spec.rb +0 -55
- data/spec/unit/mongoid/collection_spec.rb +0 -187
- data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
- data/spec/unit/mongoid/collections/master_spec.rb +0 -41
- data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
- data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
- data/spec/unit/mongoid/commands/create_spec.rb +0 -31
- data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
- data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
- data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
- data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
- data/spec/unit/mongoid/commands/save_spec.rb +0 -107
- data/spec/unit/mongoid/commands_spec.rb +0 -270
- data/spec/unit/mongoid/config_spec.rb +0 -172
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
- data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
- data/spec/unit/mongoid/contexts_spec.rb +0 -25
- data/spec/unit/mongoid/criteria_spec.rb +0 -824
- data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
- data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
- data/spec/unit/mongoid/cursor_spec.rb +0 -74
- data/spec/unit/mongoid/deprecation_spec.rb +0 -24
- data/spec/unit/mongoid/document_spec.rb +0 -818
- data/spec/unit/mongoid/errors_spec.rb +0 -103
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
- data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
- data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
- data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
- data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
- data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
- data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
- data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
- data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
- data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
- data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
- data/spec/unit/mongoid/extras_spec.rb +0 -102
- data/spec/unit/mongoid/factory_spec.rb +0 -31
- data/spec/unit/mongoid/field_spec.rb +0 -143
- data/spec/unit/mongoid/fields_spec.rb +0 -181
- data/spec/unit/mongoid/finders_spec.rb +0 -404
- data/spec/unit/mongoid/identity_spec.rb +0 -109
- data/spec/unit/mongoid/indexes_spec.rb +0 -93
- data/spec/unit/mongoid/javascript_spec.rb +0 -48
- data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
- data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
- data/spec/unit/mongoid/matchers_spec.rb +0 -329
- data/spec/unit/mongoid/memoization_spec.rb +0 -75
- data/spec/unit/mongoid/named_scope_spec.rb +0 -123
- data/spec/unit/mongoid/observable_spec.rb +0 -46
- data/spec/unit/mongoid/paths_spec.rb +0 -124
- data/spec/unit/mongoid/scope_spec.rb +0 -240
- data/spec/unit/mongoid/state_spec.rb +0 -83
- data/spec/unit/mongoid/timestamps_spec.rb +0 -25
- data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
- data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
- data/spec/unit/mongoid/validations_spec.rb +0 -190
- data/spec/unit/mongoid/versioning_spec.rb +0 -41
- data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,22 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Extensions do
|
4
|
-
|
5
|
-
context "setting floating point numbers" do
|
6
|
-
|
7
|
-
context "when value is an empty string" do
|
8
|
-
|
9
|
-
let(:person) { Person.new(:ssn => "555555555555555") }
|
10
|
-
|
11
|
-
before do
|
12
|
-
Person.validates_numericality_of :blood_alcohol_content, :allow_blank => true
|
13
|
-
end
|
14
|
-
|
15
|
-
it "does not set the value" do
|
16
|
-
person.save.should be_true
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,119 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Finders do
|
4
|
-
|
5
|
-
describe "#find" do
|
6
|
-
|
7
|
-
context "using string ids" do
|
8
|
-
|
9
|
-
before do
|
10
|
-
@documents = []
|
11
|
-
@document = Person.create(:title => "Mrs.", :ssn => "another")
|
12
|
-
3.times do |n|
|
13
|
-
@documents << Person.create(:title => "Mr.", :ssn => "#{n}22")
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
after do
|
18
|
-
Person.delete_all
|
19
|
-
end
|
20
|
-
|
21
|
-
context "with an id as an argument" do
|
22
|
-
|
23
|
-
context "when the document is found" do
|
24
|
-
|
25
|
-
it "returns the document" do
|
26
|
-
Person.find(@document.id).should == @document
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
context "when the document is not found" do
|
32
|
-
|
33
|
-
it "raises an error" do
|
34
|
-
lambda { Person.find("5") }.should raise_error
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
context "with an array of ids as args" do
|
42
|
-
|
43
|
-
context "when the documents are found" do
|
44
|
-
|
45
|
-
it "returns an array of the documents" do
|
46
|
-
@people = Person.find(@documents.map(&:id))
|
47
|
-
@people.should == @documents
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
context "when no documents found" do
|
53
|
-
|
54
|
-
it "raises an error" do
|
55
|
-
lambda { Person.find(["11", "21", "31"]) }.should raise_error
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context "using object ids" do
|
63
|
-
|
64
|
-
before do
|
65
|
-
Mongoid.use_object_ids = true
|
66
|
-
@documents = []
|
67
|
-
@document = Person.create(:title => "Mrs.", :ssn => "another")
|
68
|
-
3.times do |n|
|
69
|
-
@documents << Person.create(:title => "Mr.", :ssn => "#{n}22")
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
after do
|
74
|
-
Mongoid.use_object_ids = false
|
75
|
-
Person.delete_all
|
76
|
-
end
|
77
|
-
|
78
|
-
context "with an id as an argument" do
|
79
|
-
|
80
|
-
context "when the document is found" do
|
81
|
-
|
82
|
-
it "returns the document" do
|
83
|
-
Person.find(@document.id).should == @document
|
84
|
-
end
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
context "when the document is not found" do
|
89
|
-
|
90
|
-
it "raises an error" do
|
91
|
-
lambda { Person.find("5") }.should raise_error
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
context "with an array of ids as args" do
|
99
|
-
|
100
|
-
context "when the documents are found" do
|
101
|
-
|
102
|
-
it "returns an array of the documents" do
|
103
|
-
@people = Person.find(@documents.map(&:id))
|
104
|
-
@people.should == @documents
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
context "when no documents found" do
|
110
|
-
|
111
|
-
it "raises an error" do
|
112
|
-
lambda { Person.find(["11", "21", "31"]) }.should raise_error
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,137 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::Document do
|
4
|
-
|
5
|
-
before do
|
6
|
-
Browser.delete_all
|
7
|
-
Firefox.delete_all
|
8
|
-
Canvas.delete_all
|
9
|
-
end
|
10
|
-
|
11
|
-
context "when document is a subclass of a root class" do
|
12
|
-
|
13
|
-
before do
|
14
|
-
Browser.delete_all
|
15
|
-
@browser = Browser.create(:version => 3, :name => "Test")
|
16
|
-
end
|
17
|
-
|
18
|
-
it "saves in the same collection as the root" do
|
19
|
-
collection = Mongoid.master.collection("canvases")
|
20
|
-
attributes = collection.find({ :name => "Test"}, {}).next_document
|
21
|
-
attributes["version"].should == 3
|
22
|
-
attributes["name"].should == "Test"
|
23
|
-
attributes["_type"].should == "Browser"
|
24
|
-
attributes["_id"].should == @browser.id
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
context "when document is a subclass of a subclass" do
|
30
|
-
|
31
|
-
before do
|
32
|
-
Firefox.delete_all
|
33
|
-
@firefox = Firefox.create(:version => 2, :name => "Testy")
|
34
|
-
end
|
35
|
-
|
36
|
-
it "saves in the same collection as the root" do
|
37
|
-
collection = Mongoid.master.collection("canvases")
|
38
|
-
attributes = collection.find({ :name => "Testy"}, {}).next_document
|
39
|
-
attributes["version"].should == 2
|
40
|
-
attributes["name"].should == "Testy"
|
41
|
-
attributes["_type"].should == "Firefox"
|
42
|
-
attributes["_id"].should == @firefox.id
|
43
|
-
end
|
44
|
-
|
45
|
-
it "returns the document when querying for superclass" do
|
46
|
-
Browser.where(:name => "Testy").first.should == @firefox
|
47
|
-
end
|
48
|
-
|
49
|
-
it "returns the document when querying for root class" do
|
50
|
-
Canvas.where(:name => "Testy").first.should == @firefox
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
context "when document has associations" do
|
56
|
-
|
57
|
-
before do
|
58
|
-
Firefox.delete_all
|
59
|
-
@firefox = Firefox.new(:name => "firefox")
|
60
|
-
@writer = HtmlWriter.new(:speed => 100)
|
61
|
-
@circle = Circle.new(:radius => 50)
|
62
|
-
@square = Square.new(:width => 300, :height => 150)
|
63
|
-
@firefox.writer = @writer
|
64
|
-
@firefox.shapes << [ @circle, @square ]
|
65
|
-
@firefox.save
|
66
|
-
end
|
67
|
-
|
68
|
-
after do
|
69
|
-
Firefox.delete_all
|
70
|
-
end
|
71
|
-
|
72
|
-
it "properly saves a has one subclass" do
|
73
|
-
from_db = Firefox.find(@firefox.id)
|
74
|
-
from_db.should be_a_kind_of(Firefox)
|
75
|
-
from_db.writer.should be_a_kind_of(HtmlWriter)
|
76
|
-
from_db.writer.should == @writer
|
77
|
-
end
|
78
|
-
|
79
|
-
it "properly saves a has many subclass" do
|
80
|
-
from_db = Firefox.find(@firefox.id)
|
81
|
-
from_db.shapes.first.should == @circle
|
82
|
-
from_db.shapes.first.should be_a_kind_of(Circle)
|
83
|
-
from_db.shapes.last.should == @square
|
84
|
-
from_db.shapes.last.should be_a_kind_of(Square)
|
85
|
-
end
|
86
|
-
|
87
|
-
it "properly sets up the belongs to" do
|
88
|
-
from_db = Firefox.find(@firefox.id)
|
89
|
-
circle = from_db.shapes.first
|
90
|
-
circle.should == @circle
|
91
|
-
circle.canvas.should == @firefox
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
context "when document has subclasses" do
|
97
|
-
|
98
|
-
before do
|
99
|
-
@firefox = Firefox.create(:name => "firefox")
|
100
|
-
end
|
101
|
-
|
102
|
-
after do
|
103
|
-
Firefox.delete_all
|
104
|
-
end
|
105
|
-
|
106
|
-
it "returns subclasses for querying parents" do
|
107
|
-
firefox = Canvas.where(:name => "firefox").first
|
108
|
-
firefox.should be_a_kind_of(Firefox)
|
109
|
-
firefox.should == @firefox
|
110
|
-
end
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
context "deleting subclasses" do
|
115
|
-
|
116
|
-
before do
|
117
|
-
@firefox = Firefox.create(:name => "firefox")
|
118
|
-
@browser = Browser.create(:name => "browser")
|
119
|
-
@canvas = Canvas.create(:name => "canvas")
|
120
|
-
end
|
121
|
-
|
122
|
-
after do
|
123
|
-
Firefox.delete_all
|
124
|
-
Browser.delete_all
|
125
|
-
Canvas.delete_all
|
126
|
-
end
|
127
|
-
|
128
|
-
it "deletes from the parent class collection" do
|
129
|
-
@firefox.delete
|
130
|
-
Firefox.count.should == 0
|
131
|
-
Browser.count.should == 1
|
132
|
-
Canvas.count.should == 2
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Mongoid::NamedScope do
|
4
|
-
|
5
|
-
describe ".named_scope" do
|
6
|
-
|
7
|
-
class ::Person
|
8
|
-
named_scope :doctors, {:where => {:title => 'Dr.'} }
|
9
|
-
named_scope :old, criteria.where(:age.gt => 50)
|
10
|
-
end
|
11
|
-
|
12
|
-
before do
|
13
|
-
@document = Person.create(:title => "Dr.", :age => 65, :terms => true)
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
Person.delete_all
|
18
|
-
end
|
19
|
-
|
20
|
-
context "accessing a single named scope" do
|
21
|
-
|
22
|
-
it "returns the document" do
|
23
|
-
Person.doctors.first.should == @document
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
context "chaining named scopes" do
|
29
|
-
|
30
|
-
it "returns the document" do
|
31
|
-
Person.old.doctors.first.should == @document
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
context "mixing named scopes and class methods" do
|
37
|
-
|
38
|
-
it "returns the document" do
|
39
|
-
Person.accepted.old.doctors.first.should == @document
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
data/spec/models/address.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
class Address
|
2
|
-
include Mongoid::Document
|
3
|
-
field :address_type
|
4
|
-
field :number, :type => Integer
|
5
|
-
field :street
|
6
|
-
field :city
|
7
|
-
field :state
|
8
|
-
field :post_code
|
9
|
-
field :parent_title
|
10
|
-
field :services, :type => Array
|
11
|
-
key :street
|
12
|
-
embed_many :locations
|
13
|
-
|
14
|
-
embedded_in :addressable, :inverse_of => :addresses do
|
15
|
-
def extension
|
16
|
-
"Testing"
|
17
|
-
end
|
18
|
-
def doctor?
|
19
|
-
title == "Dr"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
named_scope :rodeo, where(:street => "Rodeo Dr")
|
24
|
-
|
25
|
-
def set_parent=(set = false)
|
26
|
-
self.parent_title = addressable.title if set
|
27
|
-
end
|
28
|
-
|
29
|
-
class << self
|
30
|
-
def california
|
31
|
-
where(:state => "CA")
|
32
|
-
end
|
33
|
-
|
34
|
-
def homes
|
35
|
-
where(:address_type => "Home")
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
data/spec/models/animal.rb
DELETED
data/spec/models/callbacks.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
class Artist
|
2
|
-
include Mongoid::Document
|
3
|
-
field :name
|
4
|
-
embed_many :songs
|
5
|
-
|
6
|
-
after_create :create_songs
|
7
|
-
|
8
|
-
protected
|
9
|
-
def create_songs
|
10
|
-
2.times { |n| songs.create!(:title => "#{n}") }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Song
|
15
|
-
include Mongoid::Document
|
16
|
-
field :title
|
17
|
-
embedded_in :artist, :inverse_of => :songs
|
18
|
-
end
|
data/spec/models/comment.rb
DELETED
data/spec/models/country_code.rb
DELETED
data/spec/models/employer.rb
DELETED
data/spec/models/game.rb
DELETED
data/spec/models/inheritance.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
class Canvas
|
2
|
-
include Mongoid::Document
|
3
|
-
field :name
|
4
|
-
embed_many :shapes
|
5
|
-
embed_one :writer
|
6
|
-
|
7
|
-
def render
|
8
|
-
shapes.each { |shape| render }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class Browser < Canvas
|
13
|
-
field :version, :type => Integer
|
14
|
-
def render; end
|
15
|
-
end
|
16
|
-
|
17
|
-
class Firefox < Browser
|
18
|
-
field :user_agent
|
19
|
-
def render; end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Shape
|
23
|
-
include Mongoid::Document
|
24
|
-
field :x, :type => Integer, :default => 0
|
25
|
-
field :y, :type => Integer, :default => 0
|
26
|
-
|
27
|
-
embedded_in :canvas, :inverse_of => :shapes
|
28
|
-
|
29
|
-
def render; end
|
30
|
-
end
|
31
|
-
|
32
|
-
class Square < Shape
|
33
|
-
field :width, :type => Integer, :default => 0
|
34
|
-
field :height, :type => Integer, :default => 0
|
35
|
-
end
|
36
|
-
|
37
|
-
class Circle < Shape
|
38
|
-
field :radius, :type => Integer, :default => 0
|
39
|
-
end
|
40
|
-
|
41
|
-
class Writer
|
42
|
-
include Mongoid::Document
|
43
|
-
field :speed, :type => Integer, :default => 0
|
44
|
-
|
45
|
-
embedded_in :canvas, :inverse_of => :writer
|
46
|
-
|
47
|
-
def write; end
|
48
|
-
end
|
49
|
-
|
50
|
-
class HtmlWriter < Writer
|
51
|
-
def write; end
|
52
|
-
end
|
53
|
-
|
54
|
-
class PdfWriter < Writer
|
55
|
-
def write; end
|
56
|
-
end
|