Sha256: 78ed174a20c730cdeffeef9b8418a616143f3e4ad35f1801691d5d3fca3fde8f

Contents?: true

Size: 1.18 KB

Versions: 5

Compression:

Stored size: 1.18 KB

Contents

# typed: false
# frozen_string_literal: false

require './spec/spec_setup'
require 'frontman/process/chain'
require 'frontman/process/processor'

describe Frontman::Process::Chain do
  it 'should not manipulate data when there are no processors' do
    data = 'foobar'
    subject.process(data)

    expect(data).to eq 'foobar'
  end

  it 'should pass data through all processors' do
    subject.add_processors([processor_factory(lambda { |string|
      string << 'CASE'
    }), processor_factory(lambda { |string|
      string.downcase!
    })])

    data = 'down'
    subject.process(data)
    expect(data).to eq 'downcase'
  end

  it 'should map over all processors and return the proper result' do
    subject.add_processors(
      [
        processor_factory(->(_) { 'foo' }),
        processor_factory(->(_) { 'bar' })
      ]
    )

    expect(subject.process(nil)).to eq %w[foo bar]
  end
end

class Processor < Frontman::Process::Processor
  attr_accessor :callback

  def on_process(callback)
    @callback = callback
  end

  def process(data)
    @callback.call(data)
  end
end

def processor_factory(on_process)
  processor = Processor.new
  processor.on_process(on_process)
  processor
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
frontman-ssg-0.1.1 spec/frontman/process/chain_spec.rb
frontman-ssg-0.1.0 spec/frontman/process/chain_spec.rb
frontman-ssg-0.0.4 spec/frontman/process/chain_spec.rb
frontman-ssg-0.0.3 spec/frontman/process/chain_spec.rb
frontman-ssg-0.0.2 spec/frontman/process/chain_spec.rb