Sha256: a29c591e792a7c3aba6458ca44d54f84e2dd6533dc05d168f11cee048fbd01c8

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

require 'rspec'
require 'loadable_component'
require 'timecop'

class DetonatingComponent < LoadableComponent
  def load
    raise "should never be called"
  end

  def loaded?
    # already loaded
    true
  end
end

class LoadsOk < LoadableComponent
  def initialize(second_load_call_passes)
    @second_load_call_passes = second_load_call_passes
    @load_called = false
  end

  def load
    @load_called = true
  end

  def loaded?
    unless @load_called
      return false
    end

    unless @second_load_call_passes
      return false
    end

    true
  end

  def load_called?
    @load_called
  end
end

class SlowlyDetonatingComponent < SlowLoadableComponent
  def initialize
    super(1)
  end

  def load
    raise "should never be called"
  end

  def loaded?
    true
  end
end

class SlowLoading < SlowLoadableComponent
  attr_reader :loop_count

  def initialize(count)
    @count = count
    @loop_count = 0

    super(1)
  end

  def load
    # does nothing
  end

  def loaded?
    if @loop_count > @count
      false
    else
      @loop_count += 1
    end
  end
end

class OnlyOneLoad < SlowLoading
  def initialize(count)
    super(count)
    @load_called = false
  end

  def load
    if @load_called
      raise "load already called"
    end

    @load_called = true
  end
end

class BasicSlowLoader < SlowLoadableComponent
  def load
    # does nothing
  end

  def loaded?
    Timecop.travel 1
    false # never loads
  end
end

class HasError < SlowLoadableComponent
  class CustomError < StandardError; end

  def load
    # does nothing
  end

  def loaded?
    false
  end

  def check_error
    raise CustomError
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
loadable_component-0.0.2 spec/spec_helper.rb