Sha256: bb83737524964e9d987772b2e0cf9a98d87517254fccff4d73c2addc879a1fe7

Contents?: true

Size: 1.82 KB

Versions: 54

Compression:

Stored size: 1.82 KB

Contents

require "spec_helper"

describe Mongoid::Relations::Builders::Referenced::One do

  let(:base) do
    double(new_record?: false)
  end

  describe "#build" do

    let(:criteria) do
      Post.where("person_id" => object)
    end

    let(:metadata) do
      double(
        klass: Post,
        name: :post,
        foreign_key: "person_id",
        criteria: criteria,
        inverse_klass: Person
      )
    end

    let(:builder) do
      described_class.new(base, metadata, object)
    end

    context "when provided an id" do

      let(:object_id) do
        BSON::ObjectId.new
      end

      let(:object) do
        object_id
      end

      let(:post) do
        double
      end

      before do
        expect(criteria).to receive(:first).and_return(post)
      end

      let!(:documents) do
        builder.build
      end

      it "sets the document" do
        expect(documents).to eq(post)
      end
    end

    context "when provided a object" do

      let(:object) do
        Post.new
      end

      let(:document) do
        builder.build
      end

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

  describe "#build" do

    let(:person) do
      Person.new
    end

    context "when the document is not found" do

      it "returns nil" do
        expect(person.game).to be_nil
      end
    end

    context "when the document is persisted" do

      let!(:game) do
        Game.create(person: person)
      end

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

    context "when the document have a non standard pk" do

      before do
        person.save
      end

      let!(:cat) do
        Cat.create(person: person)
      end

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

Version data entries

54 entries across 49 versions & 3 rubygems

Version Path
mongoid-6.4.8 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.7 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.5 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-5.4.1 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.4 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.2 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.1 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-5.4.0 spec/mongoid/relations/builders/referenced/one_spec.rb
tdiary-5.0.8 vendor/bundle/gems/mongoid-6.4.0/spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.4.0 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.3.0 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.2.1 spec/mongoid/relations/builders/referenced/one_spec.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.2.0/spec/mongoid/relations/builders/referenced/one_spec.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.1.0/spec/mongoid/relations/builders/referenced/one_spec.rb
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/mongoid-6.1.0/spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.2.0 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.1.1 spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-5.2.1 spec/mongoid/relations/builders/referenced/one_spec.rb
tdiary-5.0.4 vendor/bundle/gems/mongoid-6.1.0/spec/mongoid/relations/builders/referenced/one_spec.rb
mongoid-6.1.0 spec/mongoid/relations/builders/referenced/one_spec.rb