Sha256: 9903e7968250db388772c00767d6d50fe4898613113f256d94d8aa285f0a4ebe

Contents?: true

Size: 1.61 KB

Versions: 14

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require "spec_helper"
require_relative './embeds_many_models'

describe Mongoid::Association::Embedded::EmbedsMany do

  context 'when projecting with #only' do
    before do
      congress = EmmCongress.new(name: 'foo')
      congress.legislators << EmmLegislator.new(a: 1, b: 2)
      congress.save!
    end

    let(:congress) do
      EmmCongress.where(name: 'foo').only(:name, 'legislators._id', 'legislators.a').first
    end

    let(:legislator) { congress.legislators.first }

    it 'populates specified fields only' do
      expect(legislator.a).to eq(1)
      # has a default value specified in the model
      expect do
        legislator.b
      end.to raise_error(ActiveModel::MissingAttributeError)
      expect(legislator.attributes.keys).to eq(['_id', 'a'])
    end

    context 'when using only with $' do
      before do
        Patient.destroy_all
        Patient.create!(
          title: 'Steve',
          addresses: [
            Address.new(number: '123'),
            Address.new(number: '456'),
          ],
        )
      end

      let(:patient) do
        Patient.where('addresses.number' => {'$gt' => 100}).only('addresses.$').first
      end

      it 'loads embedded association' do
        expect(patient.addresses.first.number).to eq(123)
      end
    end

    context "when excluding the relation" do
      let(:congress) do
        EmmCongress.where(name: 'foo').only(:_id).first
      end

      it 'raises a MissingAttributeError' do
        expect do
          congress.legislators
        end.to raise_error(ActiveModel::MissingAttributeError)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mongoid-8.0.8 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.5 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.4 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.7 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.3 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.2 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.6 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.1 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.5 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.1.0 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.4 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.3 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.2 spec/mongoid/association/embedded/embeds_many_query_spec.rb
mongoid-8.0.1 spec/mongoid/association/embedded/embeds_many_query_spec.rb