mongoid 1.2.8 → 1.2.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/Rakefile +1 -1
 - data/VERSION +1 -1
 - data/lib/mongoid.rb +2 -3
 - data/lib/mongoid/associations.rb +5 -3
 - data/lib/mongoid/associations/belongs_to_related.rb +6 -9
 - data/lib/mongoid/associations/has_many.rb +2 -0
 - data/lib/mongoid/associations/has_many_related.rb +10 -0
 - data/lib/mongoid/attributes.rb +6 -1
 - data/lib/mongoid/commands.rb +2 -10
 - data/lib/mongoid/components.rb +11 -12
 - data/lib/mongoid/contexts/enumerable.rb +21 -11
 - data/lib/mongoid/contexts/mongo.rb +40 -1
 - data/lib/mongoid/criteria.rb +3 -29
 - data/lib/mongoid/criterion/inclusion.rb +2 -1
 - data/lib/mongoid/document.rb +5 -6
 - data/lib/mongoid/extensions.rb +10 -0
 - data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
 - data/lib/mongoid/extensions/binary/conversions.rb +17 -0
 - data/lib/mongoid/{caching.rb → extras.rb} +26 -3
 - data/lib/mongoid/field.rb +20 -7
 - data/lib/mongoid/finders.rb +10 -80
 - data/mongoid.gemspec +15 -13
 - data/spec/integration/mongoid/document_spec.rb +1 -1
 - data/spec/models/person.rb +1 -0
 - data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +4 -0
 - data/spec/unit/mongoid/associations/has_many_related_spec.rb +42 -13
 - data/spec/unit/mongoid/associations/has_many_spec.rb +12 -7
 - data/spec/unit/mongoid/associations_spec.rb +16 -0
 - data/spec/unit/mongoid/attributes_spec.rb +23 -0
 - data/spec/unit/mongoid/commands/destroy_spec.rb +3 -0
 - data/spec/unit/mongoid/commands_spec.rb +4 -11
 - data/spec/unit/mongoid/contexts/enumerable_spec.rb +16 -0
 - data/spec/unit/mongoid/contexts/mongo_spec.rb +96 -0
 - data/spec/unit/mongoid/criteria_spec.rb +11 -4
 - data/spec/unit/mongoid/document_spec.rb +11 -0
 - data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +22 -0
 - data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +22 -0
 - data/spec/unit/mongoid/{enslavement_spec.rb → extras_spec.rb} +55 -2
 - data/spec/unit/mongoid/field_spec.rb +62 -0
 - data/spec/unit/mongoid/finders_spec.rb +36 -0
 - metadata +69 -37
 - data/HISTORY +0 -342
 - data/lib/mongoid/enslavement.rb +0 -38
 - data/spec/unit/mongoid/caching_spec.rb +0 -63
 
| 
         @@ -129,14 +129,16 @@ describe Mongoid::Associations::HasMany do 
     | 
|
| 
       129 
129 
     | 
    
         
             
                      @document,
         
     | 
| 
       130 
130 
     | 
    
         
             
                      Mongoid::Associations::Options.new(:name => :addresses)
         
     | 
| 
       131 
131 
     | 
    
         
             
                    )
         
     | 
| 
       132 
     | 
    
         
            -
                    @address =  
     | 
| 
      
 132 
     | 
    
         
            +
                    @address = mock(:parentize => true, :write_attributes => true)
         
     | 
| 
      
 133 
     | 
    
         
            +
                    Address.expects(:instantiate).returns(@address)
         
     | 
| 
      
 134 
     | 
    
         
            +
                    @address.expects(:run_callbacks).with(:before_create)
         
     | 
| 
      
 135 
     | 
    
         
            +
                    @address.expects(:run_callbacks).with(:after_create)
         
     | 
| 
       133 
136 
     | 
    
         
             
                  end
         
     | 
| 
       134 
137 
     | 
    
         | 
| 
       135 
138 
     | 
    
         
             
                  it "builds and saves a new object" do
         
     | 
| 
       136 
     | 
    
         
            -
                     
     | 
| 
      
 139 
     | 
    
         
            +
                    @address.expects(:save).returns(true)
         
     | 
| 
       137 
140 
     | 
    
         
             
                    address = @association.create({ :street => "Yet Another" })
         
     | 
| 
       138 
     | 
    
         
            -
                    address.should  
     | 
| 
       139 
     | 
    
         
            -
                    address.street.should == "Yet Another"
         
     | 
| 
      
 141 
     | 
    
         
            +
                    address.should == @address
         
     | 
| 
       140 
142 
     | 
    
         
             
                  end
         
     | 
| 
       141 
143 
     | 
    
         | 
| 
       142 
144 
     | 
    
         
             
                end
         
     | 
| 
         @@ -148,13 +150,16 @@ describe Mongoid::Associations::HasMany do 
     | 
|
| 
       148 
150 
     | 
    
         
             
                      @document,
         
     | 
| 
       149 
151 
     | 
    
         
             
                      Mongoid::Associations::Options.new(:name => :shapes)
         
     | 
| 
       150 
152 
     | 
    
         
             
                    )
         
     | 
| 
      
 153 
     | 
    
         
            +
                    @circle = mock(:parentize => true, :write_attributes => true)
         
     | 
| 
      
 154 
     | 
    
         
            +
                    Circle.expects(:instantiate).returns(@circle)
         
     | 
| 
      
 155 
     | 
    
         
            +
                    @circle.expects(:run_callbacks).with(:before_create)
         
     | 
| 
      
 156 
     | 
    
         
            +
                    @circle.expects(:run_callbacks).with(:after_create)
         
     | 
| 
       151 
157 
     | 
    
         
             
                  end
         
     | 
| 
       152 
158 
     | 
    
         | 
| 
       153 
159 
     | 
    
         
             
                  it "instantiates a class of that type" do
         
     | 
| 
       154 
     | 
    
         
            -
                     
     | 
| 
      
 160 
     | 
    
         
            +
                    @circle.expects(:save).returns(true)
         
     | 
| 
       155 
161 
     | 
    
         
             
                    circle = @association.create({ :radius => 100 }, Circle)
         
     | 
| 
       156 
     | 
    
         
            -
                    circle.should  
     | 
| 
       157 
     | 
    
         
            -
                    circle.radius.should == 100
         
     | 
| 
      
 162 
     | 
    
         
            +
                    circle.should == @circle
         
     | 
| 
       158 
163 
     | 
    
         
             
                  end
         
     | 
| 
       159 
164 
     | 
    
         | 
| 
       160 
165 
     | 
    
         
             
                end
         
     | 
| 
         @@ -453,6 +453,22 @@ describe Mongoid::Associations do 
     | 
|
| 
       453 
453 
     | 
    
         | 
| 
       454 
454 
     | 
    
         
             
                end
         
     | 
| 
       455 
455 
     | 
    
         | 
| 
      
 456 
     | 
    
         
            +
                context "when using object ids" do
         
     | 
| 
      
 457 
     | 
    
         
            +
             
     | 
| 
      
 458 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 459 
     | 
    
         
            +
                    Mongoid.use_object_ids = true
         
     | 
| 
      
 460 
     | 
    
         
            +
                  end
         
     | 
| 
      
 461 
     | 
    
         
            +
             
     | 
| 
      
 462 
     | 
    
         
            +
                  after do
         
     | 
| 
      
 463 
     | 
    
         
            +
                    Mongoid.use_object_ids = false
         
     | 
| 
      
 464 
     | 
    
         
            +
                  end
         
     | 
| 
      
 465 
     | 
    
         
            +
             
     | 
| 
      
 466 
     | 
    
         
            +
                  it "sets the foreign key as an object id" do
         
     | 
| 
      
 467 
     | 
    
         
            +
                    Game.expects(:field).with("person_id", :type => Mongo::ObjectID)
         
     | 
| 
      
 468 
     | 
    
         
            +
                    Game.belongs_to_related :person
         
     | 
| 
      
 469 
     | 
    
         
            +
                  end
         
     | 
| 
      
 470 
     | 
    
         
            +
                end
         
     | 
| 
      
 471 
     | 
    
         
            +
             
     | 
| 
       456 
472 
     | 
    
         
             
              end
         
     | 
| 
       457 
473 
     | 
    
         | 
| 
       458 
474 
     | 
    
         
             
              describe ".has_one_related" do
         
     | 
| 
         @@ -142,6 +142,17 @@ describe Mongoid::Attributes do 
     | 
|
| 
       142 
142 
     | 
    
         | 
| 
       143 
143 
     | 
    
         
             
              describe "#process" do
         
     | 
| 
       144 
144 
     | 
    
         | 
| 
      
 145 
     | 
    
         
            +
                context "when passing non accessible fields" do
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 148 
     | 
    
         
            +
                    @person = Person.new(:owner_id => 6)
         
     | 
| 
      
 149 
     | 
    
         
            +
                  end
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                  it "does not set the value" do
         
     | 
| 
      
 152 
     | 
    
         
            +
                    @person.owner_id.should be_nil
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
                end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
       145 
156 
     | 
    
         
             
                context "when attributes dont have fields defined" do
         
     | 
| 
       146 
157 
     | 
    
         | 
| 
       147 
158 
     | 
    
         
             
                  before do
         
     | 
| 
         @@ -336,6 +347,18 @@ describe Mongoid::Attributes do 
     | 
|
| 
       336 
347 
     | 
    
         | 
| 
       337 
348 
     | 
    
         
             
                end
         
     | 
| 
       338 
349 
     | 
    
         | 
| 
      
 350 
     | 
    
         
            +
                context "when attribute is not accessible" do
         
     | 
| 
      
 351 
     | 
    
         
            +
             
     | 
| 
      
 352 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 353 
     | 
    
         
            +
                    @person = Person.new
         
     | 
| 
      
 354 
     | 
    
         
            +
                    @person.owner_id = 5
         
     | 
| 
      
 355 
     | 
    
         
            +
                  end
         
     | 
| 
      
 356 
     | 
    
         
            +
             
     | 
| 
      
 357 
     | 
    
         
            +
                  it "returns the value" do
         
     | 
| 
      
 358 
     | 
    
         
            +
                    @person.read_attribute(:owner_id).should == 5
         
     | 
| 
      
 359 
     | 
    
         
            +
                  end
         
     | 
| 
      
 360 
     | 
    
         
            +
                end
         
     | 
| 
      
 361 
     | 
    
         
            +
             
     | 
| 
       339 
362 
     | 
    
         
             
              end
         
     | 
| 
       340 
363 
     | 
    
         | 
| 
       341 
364 
     | 
    
         
             
              describe "#remove_attribute" do
         
     | 
| 
         @@ -29,10 +29,13 @@ describe Mongoid::Commands::Destroy do 
     | 
|
| 
       29 
29 
     | 
    
         
             
                    @parent = Person.new
         
     | 
| 
       30 
30 
     | 
    
         
             
                    @address = Address.new(:street => "Genoa Pl")
         
     | 
| 
       31 
31 
     | 
    
         
             
                    @parent.addresses << @address
         
     | 
| 
      
 32 
     | 
    
         
            +
                    @collection = mock
         
     | 
| 
      
 33 
     | 
    
         
            +
                    Person.expects(:collection).returns(@collection)
         
     | 
| 
       32 
34 
     | 
    
         
             
                  end
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
       34 
36 
     | 
    
         
             
                  it "removes the document from the parent attributes" do
         
     | 
| 
       35 
37 
     | 
    
         
             
                    @parent.addresses.should == [@address]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    @collection.expects(:save).returns(true)
         
     | 
| 
       36 
39 
     | 
    
         
             
                    Mongoid::Commands::Destroy.execute(@address)
         
     | 
| 
       37 
40 
     | 
    
         
             
                    @parent.addresses.should be_empty
         
     | 
| 
       38 
41 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -86,10 +86,9 @@ describe Mongoid::Commands do 
     | 
|
| 
       86 
86 
     | 
    
         
             
                    @person = Person.new
         
     | 
| 
       87 
87 
     | 
    
         
             
                  end
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
                  it " 
     | 
| 
      
 89 
     | 
    
         
            +
                  it "lets the error bubble up" do
         
     | 
| 
       90 
90 
     | 
    
         
             
                    Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
         
     | 
| 
       91 
     | 
    
         
            -
                    @person.save
         
     | 
| 
       92 
     | 
    
         
            -
                    @person.errors.on(:mongoid).should == "Operation Failed"
         
     | 
| 
      
 91 
     | 
    
         
            +
                    lambda { @person.save }.should raise_error
         
     | 
| 
       93 
92 
     | 
    
         
             
                  end
         
     | 
| 
       94 
93 
     | 
    
         | 
| 
       95 
94 
     | 
    
         
             
                end
         
     | 
| 
         @@ -204,14 +203,8 @@ describe Mongoid::Commands do 
     | 
|
| 
       204 
203 
     | 
    
         
             
                    Mongoid::Commands::Save.expects(:execute).raises(Mongo::OperationFailure.new("Operation Failed"))
         
     | 
| 
       205 
204 
     | 
    
         
             
                  end
         
     | 
| 
       206 
205 
     | 
    
         | 
| 
       207 
     | 
    
         
            -
                  it " 
     | 
| 
       208 
     | 
    
         
            -
                     
     | 
| 
       209 
     | 
    
         
            -
                    person.errors.on(:mongoid).should == "Operation Failed"
         
     | 
| 
       210 
     | 
    
         
            -
                  end
         
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
                  it "keeps the document's new record flag" do
         
     | 
| 
       213 
     | 
    
         
            -
                    person = Person.create
         
     | 
| 
       214 
     | 
    
         
            -
                    person.should be_a_new_record
         
     | 
| 
      
 206 
     | 
    
         
            +
                  it "lets the error bubble up" do
         
     | 
| 
      
 207 
     | 
    
         
            +
                    lambda { Person.create }.should raise_error
         
     | 
| 
       215 
208 
     | 
    
         
             
                  end
         
     | 
| 
       216 
209 
     | 
    
         | 
| 
       217 
210 
     | 
    
         
             
                end
         
     | 
| 
         @@ -145,6 +145,22 @@ describe Mongoid::Contexts::Enumerable do 
     | 
|
| 
       145 
145 
     | 
    
         | 
| 
       146 
146 
     | 
    
         
             
              end
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
      
 148 
     | 
    
         
            +
              describe "#iterate" do
         
     | 
| 
      
 149 
     | 
    
         
            +
                before do
         
     | 
| 
      
 150 
     | 
    
         
            +
                  @criteria.where(:street => "Bourke Street")
         
     | 
| 
      
 151 
     | 
    
         
            +
                  @criteria.documents = @docs
         
     | 
| 
      
 152 
     | 
    
         
            +
                  @context = Mongoid::Contexts::Enumerable.new(@criteria)
         
     | 
| 
      
 153 
     | 
    
         
            +
                end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                it "executes the criteria" do
         
     | 
| 
      
 156 
     | 
    
         
            +
                  acc = []
         
     | 
| 
      
 157 
     | 
    
         
            +
                  @context.iterate do |doc|
         
     | 
| 
      
 158 
     | 
    
         
            +
                    acc << doc
         
     | 
| 
      
 159 
     | 
    
         
            +
                  end
         
     | 
| 
      
 160 
     | 
    
         
            +
                  acc.should == [@melbourne]
         
     | 
| 
      
 161 
     | 
    
         
            +
                end
         
     | 
| 
      
 162 
     | 
    
         
            +
              end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
       148 
164 
     | 
    
         
             
              describe "#last" do
         
     | 
| 
       149 
165 
     | 
    
         | 
| 
       150 
166 
     | 
    
         
             
                it "returns the last matching in the enumerable" do
         
     | 
| 
         @@ -27,6 +27,43 @@ describe Mongoid::Contexts::Mongo do 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
              describe "blank?" do
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                before do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @criteria = Mongoid::Criteria.new(Game)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @criteria.where(:test => 'Testing')
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @context = Mongoid::Contexts::Mongo.new(@criteria)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                context "when a document exists" do
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @doc = mock
         
     | 
| 
      
 42 
     | 
    
         
            +
                    @collection = mock
         
     | 
| 
      
 43 
     | 
    
         
            +
                    Game.expects(:collection).returns(@collection)
         
     | 
| 
      
 44 
     | 
    
         
            +
                    @collection.expects(:find_one).with({ :test => "Testing" }, { :fields => [ :_id ] }).returns(@doc)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  it "returns false" do
         
     | 
| 
      
 48 
     | 
    
         
            +
                    @context.blank?.should be_false
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                context "when a document does not exist" do
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 55 
     | 
    
         
            +
                    @doc = mock
         
     | 
| 
      
 56 
     | 
    
         
            +
                    @collection = mock
         
     | 
| 
      
 57 
     | 
    
         
            +
                    Game.expects(:collection).returns(@collection)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    @collection.expects(:find_one).with({ :test => "Testing" }, { :fields => [ :_id ] }).returns(nil)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  it "returns true" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                    @context.blank?.should be_true
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
              end
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       30 
67 
     | 
    
         
             
              describe "#count" do
         
     | 
| 
       31 
68 
     | 
    
         | 
| 
       32 
69 
     | 
    
         
             
                before do
         
     | 
| 
         @@ -214,6 +251,65 @@ describe Mongoid::Contexts::Mongo do 
     | 
|
| 
       214 
251 
     | 
    
         
             
                end
         
     | 
| 
       215 
252 
     | 
    
         
             
              end
         
     | 
| 
       216 
253 
     | 
    
         | 
| 
      
 254 
     | 
    
         
            +
              describe "#iterate" do
         
     | 
| 
      
 255 
     | 
    
         
            +
                before do
         
     | 
| 
      
 256 
     | 
    
         
            +
                  @criteria = Mongoid::Criteria.new(Person)
         
     | 
| 
      
 257 
     | 
    
         
            +
                  @context = Mongoid::Contexts::Mongo.new(@criteria)
         
     | 
| 
      
 258 
     | 
    
         
            +
                  @person = Person.new(:title => "Sir")
         
     | 
| 
      
 259 
     | 
    
         
            +
                  @cursor = stub('cursor')
         
     | 
| 
      
 260 
     | 
    
         
            +
                  @cursor.stubs(:each).yields(@person)
         
     | 
| 
      
 261 
     | 
    
         
            +
                end
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
                context "when not caching" do
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
      
 265 
     | 
    
         
            +
                  it "executes the criteria" do
         
     | 
| 
      
 266 
     | 
    
         
            +
                    @context.expects(:execute).returns(@cursor)
         
     | 
| 
      
 267 
     | 
    
         
            +
                    @context.iterate do |person|
         
     | 
| 
      
 268 
     | 
    
         
            +
                      person.should == @person
         
     | 
| 
      
 269 
     | 
    
         
            +
                    end
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
                  end
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
                end
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
                context "when caching" do
         
     | 
| 
      
 276 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 277 
     | 
    
         
            +
                    @criteria.cache
         
     | 
| 
      
 278 
     | 
    
         
            +
                  end
         
     | 
| 
      
 279 
     | 
    
         
            +
             
     | 
| 
      
 280 
     | 
    
         
            +
                  it "executes the criteria" do
         
     | 
| 
      
 281 
     | 
    
         
            +
                    @context.expects(:execute).returns(@cursor)
         
     | 
| 
      
 282 
     | 
    
         
            +
                    @context.iterate do |person|
         
     | 
| 
      
 283 
     | 
    
         
            +
                      person.should == @person
         
     | 
| 
      
 284 
     | 
    
         
            +
                    end
         
     | 
| 
      
 285 
     | 
    
         
            +
                  end
         
     | 
| 
      
 286 
     | 
    
         
            +
             
     | 
| 
      
 287 
     | 
    
         
            +
                  it "executes only once and it caches the result" do
         
     | 
| 
      
 288 
     | 
    
         
            +
                    @context.expects(:execute).once.returns(@cursor)
         
     | 
| 
      
 289 
     | 
    
         
            +
                    @context.iterate do |person|
         
     | 
| 
      
 290 
     | 
    
         
            +
                      person.should == @person
         
     | 
| 
      
 291 
     | 
    
         
            +
                    end
         
     | 
| 
      
 292 
     | 
    
         
            +
                    @context.iterate do |person|
         
     | 
| 
      
 293 
     | 
    
         
            +
                      person.should == @person
         
     | 
| 
      
 294 
     | 
    
         
            +
                    end
         
     | 
| 
      
 295 
     | 
    
         
            +
                  end
         
     | 
| 
      
 296 
     | 
    
         
            +
             
     | 
| 
      
 297 
     | 
    
         
            +
                  it "executes even if there is no block" do
         
     | 
| 
      
 298 
     | 
    
         
            +
                    @context.expects(:execute).once.returns(@cursor)
         
     | 
| 
      
 299 
     | 
    
         
            +
                    @context.iterate
         
     | 
| 
      
 300 
     | 
    
         
            +
                  end
         
     | 
| 
      
 301 
     | 
    
         
            +
             
     | 
| 
      
 302 
     | 
    
         
            +
                  it "caches even if there is no block" do
         
     | 
| 
      
 303 
     | 
    
         
            +
                    @context.expects(:execute).once.returns(@cursor)
         
     | 
| 
      
 304 
     | 
    
         
            +
                    @context.iterate
         
     | 
| 
      
 305 
     | 
    
         
            +
                    @context.iterate do |person|
         
     | 
| 
      
 306 
     | 
    
         
            +
                      person.should == @person
         
     | 
| 
      
 307 
     | 
    
         
            +
                    end
         
     | 
| 
      
 308 
     | 
    
         
            +
                  end
         
     | 
| 
      
 309 
     | 
    
         
            +
                end
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
              end
         
     | 
| 
      
 312 
     | 
    
         
            +
             
     | 
| 
       217 
313 
     | 
    
         
             
              describe "#last" do
         
     | 
| 
       218 
314 
     | 
    
         | 
| 
       219 
315 
     | 
    
         
             
                before do
         
     | 
| 
         @@ -127,10 +127,10 @@ describe Mongoid::Criteria do 
     | 
|
| 
       127 
127 
     | 
    
         
             
                  @criteria.instance_variable_set(:@context, @context)
         
     | 
| 
       128 
128 
     | 
    
         
             
                end
         
     | 
| 
       129 
129 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
                context "when the  
     | 
| 
      
 130 
     | 
    
         
            +
                context "when the context is blank" do
         
     | 
| 
       131 
131 
     | 
    
         | 
| 
       132 
132 
     | 
    
         
             
                  before do
         
     | 
| 
       133 
     | 
    
         
            -
                    @context.expects(: 
     | 
| 
      
 133 
     | 
    
         
            +
                    @context.expects(:blank?).returns(true)
         
     | 
| 
       134 
134 
     | 
    
         
             
                  end
         
     | 
| 
       135 
135 
     | 
    
         | 
| 
       136 
136 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
         @@ -138,10 +138,10 @@ describe Mongoid::Criteria do 
     | 
|
| 
       138 
138 
     | 
    
         
             
                  end
         
     | 
| 
       139 
139 
     | 
    
         
             
                end
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
                context "when the  
     | 
| 
      
 141 
     | 
    
         
            +
                context "when the context is not blank" do
         
     | 
| 
       142 
142 
     | 
    
         | 
| 
       143 
143 
     | 
    
         
             
                  before do
         
     | 
| 
       144 
     | 
    
         
            -
                    @context.expects(: 
     | 
| 
      
 144 
     | 
    
         
            +
                    @context.expects(:blank?).returns(false)
         
     | 
| 
       145 
145 
     | 
    
         
             
                  end
         
     | 
| 
       146 
146 
     | 
    
         | 
| 
       147 
147 
     | 
    
         
             
                  it "returns false" do
         
     | 
| 
         @@ -274,6 +274,13 @@ describe Mongoid::Criteria do 
     | 
|
| 
       274 
274 
     | 
    
         
             
                  @cursor = stub(:count => 10)
         
     | 
| 
       275 
275 
     | 
    
         
             
                end
         
     | 
| 
       276 
276 
     | 
    
         | 
| 
      
 277 
     | 
    
         
            +
                it "delegates to the context#iterate" do
         
     | 
| 
      
 278 
     | 
    
         
            +
                  @context = stub('context')
         
     | 
| 
      
 279 
     | 
    
         
            +
                  @criteria.stubs(:context).returns(@context)
         
     | 
| 
      
 280 
     | 
    
         
            +
                  @context.expects(:iterate)
         
     | 
| 
      
 281 
     | 
    
         
            +
                  @criteria.each
         
     | 
| 
      
 282 
     | 
    
         
            +
                end
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
       277 
284 
     | 
    
         
             
                context "when the criteria has not been executed" do
         
     | 
| 
       278 
285 
     | 
    
         | 
| 
       279 
286 
     | 
    
         
             
                  before do
         
     | 
| 
         @@ -499,6 +499,17 @@ describe Mongoid::Document do 
     | 
|
| 
       499 
499 
     | 
    
         | 
| 
       500 
500 
     | 
    
         
             
              end
         
     | 
| 
       501 
501 
     | 
    
         | 
| 
      
 502 
     | 
    
         
            +
              describe "#persisted?" do
         
     | 
| 
      
 503 
     | 
    
         
            +
             
     | 
| 
      
 504 
     | 
    
         
            +
                before do
         
     | 
| 
      
 505 
     | 
    
         
            +
                  @person = Person.new
         
     | 
| 
      
 506 
     | 
    
         
            +
                end
         
     | 
| 
      
 507 
     | 
    
         
            +
             
     | 
| 
      
 508 
     | 
    
         
            +
                it "delegates to new_record?" do
         
     | 
| 
      
 509 
     | 
    
         
            +
                  @person.persisted?.should be_false
         
     | 
| 
      
 510 
     | 
    
         
            +
                end
         
     | 
| 
      
 511 
     | 
    
         
            +
              end
         
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
       502 
513 
     | 
    
         
             
              describe "#_parent" do
         
     | 
| 
       503 
514 
     | 
    
         | 
| 
       504 
515 
     | 
    
         
             
                before do
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Mongoid::Extensions::BigDecimal::Conversions do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              let(:number) do
         
     | 
| 
      
 6 
     | 
    
         
            +
                BigDecimal.new("123456.789")
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              describe "#get" do
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "converts the string to a big decimal" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  BigDecimal.get("123456.789").should == number
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              describe "#set" do
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it "converts the big decimal to a string" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  BigDecimal.set(number).should == "123456.789"
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "spec_helper"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Mongoid::Extensions::Binary::Conversions do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              let(:bin) do
         
     | 
| 
      
 6 
     | 
    
         
            +
                Binary.new
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              describe "#get" do
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                it "returns self" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Binary.get(bin).should == bin
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              describe "#set" do
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                it "returns self" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                  Binary.set(bin).should == bin
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,10 +1,63 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "spec_helper"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            describe Mongoid:: 
     | 
| 
      
 3 
     | 
    
         
            +
            describe Mongoid::Extras do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              before do
         
     | 
| 
       6 
6 
     | 
    
         
             
                @klass = Class.new do
         
     | 
| 
       7 
     | 
    
         
            -
                  include Mongoid:: 
     | 
| 
      
 7 
     | 
    
         
            +
                  include Mongoid::Extras
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              describe ".cache" do
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                before do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @klass.cache
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                it "sets the cached boolean on the class" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @klass.cached.should be_true
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              describe ".cached" do
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                it "defaults to false" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @klass.cached.should be_false
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              describe ".cached?" do
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                context "when the class is cached" do
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @klass.cache
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  it "returns true" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                    @klass.should be_cached
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                context "when the class is not cached" do
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  it "returns false" do
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @klass.should_not be_cached
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
              describe "#cached?" do
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                before do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  @klass.cache
         
     | 
| 
      
 56 
     | 
    
         
            +
                  @doc = @klass.new
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                it "returns the class cached? value" do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  @doc.should be_cached
         
     | 
| 
       8 
61 
     | 
    
         
             
                end
         
     | 
| 
       9 
62 
     | 
    
         
             
              end
         
     | 
| 
       10 
63 
     | 
    
         |