Sha256: c68bfb25f2d8c0576cf9114f18ee5a3cef293fa4fa405fae2e0141008b9f6f37

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

shared_examples 'a mutable identifiable collection view' do
  let(:view) { described_class.new(wrapped, view_context) }

  let(:view_context) { double(:view_context) }

  let(:config) do
    {}
  end

  describe '#delete_if' do
    let(:wrapped) do
      collection_class.new(
        config,
        [double(:identifiable, identifier: Nanoc::Identifier.new('/asdf'))],
      )
    end

    it 'deletes matching' do
      view.delete_if { |i| i.identifier == '/asdf' }
      expect(view.unwrap).to be_empty
    end

    it 'does not mutate' do
      view.delete_if { |i| i.identifier == '/asdf' }
      expect(wrapped).not_to be_empty
    end

    it 'deletes no non-matching' do
      view.delete_if { |i| i.identifier == '/blah' }
      expect(wrapped).not_to be_empty
    end

    it 'returns self' do
      ret = view.delete_if { |_i| false }
      expect(ret).to equal(view)
    end

    it 'yields items with the proper context' do
      view.delete_if { |i| expect(i._context).to equal(view_context) }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nanoc-4.8.12 spec/nanoc/base/views/support/mutable_identifiable_collection_view_examples.rb
nanoc-4.8.11 spec/nanoc/base/views/support/mutable_identifiable_collection_view_examples.rb
nanoc-4.8.10 spec/nanoc/base/views/support/mutable_identifiable_collection_view_examples.rb