Sha256: caa5f842256bc75748acd0032129a05c23bb39f29ba09d4c1967b8a2acc374f4

Contents?: true

Size: 1.89 KB

Versions: 18

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

describe Nanoc::Int::Compiler::Phases::Abstract do
  subject(:phase) do
    described_class.new(wrapped: wrapped)
  end

  let(:item) { Nanoc::Int::Item.new('foo', {}, '/stuff.md') }
  let(:rep) { Nanoc::Int::ItemRep.new(item, :default) }

  let(:wrapped) { nil }

  describe '#run' do
    subject { phase.run(rep, is_outdated: false) {} }

    it 'raises' do
      expect { subject }.to raise_error(NotImplementedError)
    end
  end

  describe '#call' do
    subject { phase.call(rep, is_outdated: false) }

    let(:phase_class) do
      Class.new(described_class) do
        def self.to_s
          'AbstractSpec::MyTestingPhaseClass'
        end

        def run(_rep, is_outdated:) # rubocop:disable Lint/UnusedMethodArgument
          yield
        end
      end
    end

    let(:phase) { phase_class.new(wrapped: wrapped) }

    let(:wrapped_class) do
      Class.new(described_class) do
        def self.to_s
          'AbstractSpec::MyTestingWrappedPhaseClass'
        end

        def run(_rep, is_outdated:); end
      end
    end

    let(:wrapped) { wrapped_class.new(wrapped: nil) }

    it 'sends the proper notifications' do
      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_started, 'MyTestingPhaseClass', rep).ordered
      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_yielded, 'MyTestingPhaseClass', rep).ordered

      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_started, 'MyTestingWrappedPhaseClass', rep).ordered
      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_ended, 'MyTestingWrappedPhaseClass', rep).ordered

      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_resumed, 'MyTestingPhaseClass', rep).ordered
      expect(Nanoc::Int::NotificationCenter).to receive(:post).with(:phase_ended, 'MyTestingPhaseClass', rep).ordered

      subject
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
nanoc-4.8.12 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.11 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.10 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.9 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.8 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.7 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.6 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.5 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.4 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.3 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.2 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.1 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.8.0 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.7.14 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.7.13 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.7.12 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.7.11 spec/nanoc/base/services/compiler/phases/abstract_spec.rb
nanoc-4.7.10 spec/nanoc/base/services/compiler/phases/abstract_spec.rb