Sha256: 71feeeb5c475db1967acf3969bb3f3c41faa3e2d748e38c50364d603b8d6abcf

Contents?: true

Size: 1.69 KB

Versions: 21

Compression:

Stored size: 1.69 KB

Contents

# frozen_string_literal: true

require "spec_helper"

describe Mongoid::Association::Embedded::EmbeddedIn::Buildable do

  describe "#build" do

    let(:base) do
      double
    end

    let(:options) do
      { }
    end

    let(:association) do
      Mongoid::Association::Embedded::EmbeddedIn.new(Person, :addresses, options)
    end

    context "when a document is provided" do

      let(:object) do
        double
      end

      let(:document) do
        association.build(base, object)
      end

      it "returns the document" do
        expect(document).to eq(object)
      end
    end
  end

  context 'when the object is already associated with another object' do

    context "when inverse is embeds_many" do

      let(:appointment1) do
        Appointment.new
      end

      let(:appointment2) do
        Appointment.new
      end

      let(:person) do
        Person.create!
      end

      before do
        appointment1.person = person
        appointment2.person = person
      end

      it 'does not clear the object of its previous association' do
        expect(appointment1.person).to eq(person)
        expect(appointment2.person).to eq(person)
        expect(person.appointments).to eq([appointment1, appointment2])
      end
    end

    context "when inverse is embeds_one" do

      let(:scribe1) do
        Scribe.new
      end

      let(:scribe2) do
        Scribe.new
      end

      let(:owner) do
        Owner.create!
      end

      before do
        scribe1.owner = owner
        scribe2.owner = owner
      end

      it 'clears the object of its previous association' do
        expect(scribe1.owner).to be_nil
        expect(scribe2.owner).to eq(owner)
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
mongoid-8.0.10 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.10 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.9 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.9 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.8 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.7 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.6 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.8 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.5 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.4 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.7 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.3 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.2 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.6 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.1 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.5 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.1.0 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.4 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.3 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb
mongoid-8.0.2 spec/mongoid/association/embedded/embedded_in/buildable_spec.rb