Sha256: bf6ecd5c80ec30c6b5a0b9cd9fd5835b77e34fbbc7f74b24aba2722c1d8cfa72

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

RSpec.describe Mongoid::EmbeddedErrors do
  describe '#errors_with_embedded_errors' do
    subject(:article) { Article.new name: 'Test', summary: '-', pages: pages }
    before { |spec| article.validate unless spec.metadata[:do_not_validate] }

    context 'when article does not have any pages associated' do
      let(:pages) { [] }

      it { is_expected.not_to be_valid }
      it "returns `can't be blank` error for pages" do
        expect(article.errors[:pages]).to include "can't be blank"
      end
    end
    context 'when article has one or more invalid pages' do
      let(:pages) { [Page.new] }

      it { is_expected.not_to be_valid }
      it 'does not have any errors under `:pages` key' do
        expect(article.errors[:pages]).to be_empty
      end
      it 'returns all errors for `pages[0]` object' do
        expect(article.errors[:'pages[0].title']).to include "can't be blank"
      end
    end
    context 'when all pages in article are valid' do
      let(:pages) { [Page.new(title: 'First page')] }

      it { is_expected.to be_valid }
    end
    context 'when embedded document has not been validated', :do_not_validate do
      let(:pages) { [Page.new] }

      it 'does not trigger validations' do
        expect(article.errors).to be_empty
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-embedded-errors-2.1.1 spec/lib/mongoid/embedded_errors_spec.rb