Sha256: 2e0463ac3d05fc387ef79b7fd00405ed93635f1ee2a52a034eed2da228b80158

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true
# encoding: utf-8

require 'spec_helper'
require 'mongoid/association/referenced/has_many_models'

describe 'has_many associations' do
  context 'destroying parent in transaction with dependent child' do
    require_transaction_support

    let(:company) { HmmCompany.create! }
    let(:address) { HmmAddress.create!(company: company) }

    before do
      Company.delete_all
      Address.delete_all
    end

    context 'dependent: :destroy' do
      before do
        HmmCompany.class_eval do
          has_one :address, class_name: 'HmmAddress', dependent: :destroy
        end
      end

      it 'destroys' do
        address

        HmmCompany.count.should == 1
        HmmAddress.count.should == 1

        company.with_session do |session|
          session.with_transaction do
            company.destroy!
          end
        end

        HmmCompany.count.should == 0
        HmmAddress.count.should == 0
      end
    end

    context 'dependent: :restrict_with_error' do
      before do
        HmmCompany.class_eval do
          has_one :address, class_name: 'HmmAddress', dependent: :restrict_with_error
        end
      end

      it 'destroys' do
        address

        HmmCompany.count.should == 1
        HmmAddress.count.should == 1

        lambda do
          company.with_session do |session|
            session.with_transaction do
              company.destroy!
            end
          end
        end.should raise_error(Mongoid::Errors::DocumentNotDestroyed)

        HmmCompany.count.should == 1
        HmmAddress.count.should == 1
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-7.2.0.rc1 spec/integration/associations/has_many_spec.rb