Sha256: a6fd10c66f8db34de55cd96c04d0181438ec36cca75add4b2bd7561e68cd55a8

Contents?: true

Size: 1.8 KB

Versions: 59

Compression:

Stored size: 1.8 KB

Contents

require "spec_helper"

describe Mongoid::Relations::Builders::Embedded::One do

  let(:base) do
    double
  end

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

  describe "#build" do

    context "when provided nil" do

      let(:metadata) do
        double(klass: Name, name: :name)
      end

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

      let(:document) do
        builder.build
      end

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

    context "when provided a document" do

      let(:metadata) do
        double(klass: Name, name: :name)
      end

      let(:object) do
        Name.new
      end

      let(:document) do
        builder.build
      end

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

    context "when no type is in the object" do

      let(:metadata) do
        double(klass: Name, name: :name)
      end

      let(:object) do
        { "first_name" => "Corbin" }
      end

      let(:document) do
        builder.build
      end

      it "creates the correct type of document" do
        expect(document).to be_a_kind_of(Name)
      end

      it "sets the object on the document" do
        expect(document.first_name).to eq("Corbin")
      end
    end

    context "when a type is in the object" do

      let(:metadata) do
        double(klass: Writer, name: :writer)
      end

      let(:object) do
        { "_type" => PdfWriter.name, "speed" => 100 }
      end

      let(:document) do
        builder.build
      end

      it "creates the correct type of document" do
        expect(document).to be_a_kind_of(PdfWriter)
      end

      it "sets the object on the document" do
        expect(document.speed).to eq(100)
      end
    end
  end
end

Version data entries

59 entries across 54 versions & 6 rubygems

Version Path
mongoid-6.4.8 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.7 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.5 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-5.4.1 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.4 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.2 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.1 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-5.4.0 spec/mongoid/relations/builders/embedded/one_spec.rb
tdiary-5.0.8 vendor/bundle/gems/mongoid-6.4.0/spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.4.0 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.3.0 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.2.1 spec/mongoid/relations/builders/embedded/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/embedded/one_spec.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.2.0/spec/mongoid/relations/builders/embedded/one_spec.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.1.0/spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.2.0 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.1.1 spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-5.2.1 spec/mongoid/relations/builders/embedded/one_spec.rb
tdiary-5.0.4 vendor/bundle/gems/mongoid-6.1.0/spec/mongoid/relations/builders/embedded/one_spec.rb
mongoid-6.1.0 spec/mongoid/relations/builders/embedded/one_spec.rb