Sha256: f9ec10a7ebd88aaba7873b2145355b0d848df9acabe3d697fad0c84bc2ddfe1b

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

require "spec_helper"

describe Mongoid::Commands::Destroy do

  describe "#execute" do

    before do
      @collection = stub_everything
      @document = stub(:run_callbacks => true,
                       :collection => @collection,
                       :id => "1",
                       :_parent => false)
    end

    it "runs the before and after destroy callbacks" do
      @document.expects(:run_callbacks).with(:before_destroy)
      @document.expects(:run_callbacks).with(:after_destroy)
      Mongoid::Commands::Destroy.execute(@document)
    end

    it "removes the document from its collection" do
      @collection.expects(:remove).with({ :_id => @document.id })
      Mongoid::Commands::Destroy.execute(@document)
    end

    context "when the document is embedded" do

      before do
        @parent = Person.new
        @address = Address.new(:street => "Genoa Pl")
        @parent.addresses << @address
        @collection = mock
        Person.expects(:collection).returns(@collection)
      end

      it "removes the document from the parent attributes" do
        @parent.addresses.should == [@address]
        @collection.expects(:save).returns(true)
        Mongoid::Commands::Destroy.execute(@address)
        @parent.addresses.should be_empty
      end

    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mongoid-1.2.12 spec/unit/mongoid/commands/destroy_spec.rb
mongoid-1.2.11 spec/unit/mongoid/commands/destroy_spec.rb
mongoid-1.2.10 spec/unit/mongoid/commands/destroy_spec.rb
mongoid-1.2.9 spec/unit/mongoid/commands/destroy_spec.rb