Sha256: b7fb8530a6c728337d5626a6309d8bf8d0ec1887b51cb302ee0aca069ff50c69

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

require "spec_helper"

describe Mongoid::Relations::Constraint do

  describe "#convert" do

    context "when the id's class stores object ids" do

      before(:all) do
        Person.field(
          :_id,
          type: Moped::BSON::ObjectId,
          pre_processed: true,
          default: ->{ Moped::BSON::ObjectId.new }
        )
      end

      let(:metadata) do
        Mongoid::Relations::Metadata.new(
          class_name: "Person",
          name: :person,
          inverse_class_name: "Post",
          relation: Mongoid::Relations::Referenced::In
        )
      end

      let(:constraint) do
        described_class.new(metadata)
      end

      context "when provided an object id" do

        let(:object) do
          Moped::BSON::ObjectId.new
        end

        it "returns the object id" do
          constraint.convert(object).should eq(object)
        end
      end

      context "when provided a string" do

        let(:object) do
          Moped::BSON::ObjectId.new
        end

        it "returns an object id from the string" do
          constraint.convert(object.to_s).should eq(object)
        end
      end
    end

    context "when the id's class does not store object ids" do

      let(:metadata) do
        Mongoid::Relations::Metadata.new(
          class_name: "Account",
          name: :account,
          inverse_class_name: "Alert",
          relation: Mongoid::Relations::Referenced::In
        )
      end

      let(:constraint) do
        described_class.new(metadata)
      end

      it "returns the object" do
        constraint.convert("testing").should eq("testing")
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid-3.1.7 spec/mongoid/relations/constraint_spec.rb
mongoid-3.1.6 spec/mongoid/relations/constraint_spec.rb
mongoid-3.1.5 spec/mongoid/relations/constraint_spec.rb