Sha256: 9eaa41b50d7e5edbd2b110a097945533236089d4602a9b8b32938fe541e6f82e

Contents?: true

Size: 1.53 KB

Versions: 3

Compression:

Stored size: 1.53 KB

Contents

require_relative '../test_helper'

class PinlessComponentMock
  def stop
  end
end

class SinglePinComponentMock
  def pin
    1
  end
end

class MultiPinComponentMock
  def pin
    {a: 1, b: 2}
  end
end 

class SubcomponentsTest < Minitest::Test
  def connection
    @connection ||= ConnectionMock.new
  end

  def board
    @board ||= Denko::Board.new(connection)
  end

  def test_add_remove_pinless
    pinless = PinlessComponentMock.new

    board.add_component(pinless)
    assert_equal [pinless], board.components
    assert_empty board.single_pin_components

    board.remove_component(pinless)
    assert_empty board.components
  end

  def test_add_remove_single_pin
    single_pin = SinglePinComponentMock.new

    board.add_component(single_pin)
    test_hash = {1 => single_pin}
    assert_equal [single_pin], board.components
    assert_equal test_hash,    board.single_pin_components

    board.remove_component(single_pin)
    assert_empty board.components
    refute board.single_pin_components[1]
  end

  def test_add_remove_multi_pin
    multi_pin = MultiPinComponentMock.new

    board.add_component(multi_pin)
    assert_equal [multi_pin], board.components
    assert_empty board.single_pin_components

    board.remove_component(multi_pin)
    assert_empty board.components
  end
  
  def test_calls_stop_on_remove
    pinless = PinlessComponentMock.new
    board.add_component(pinless)

    mock = MiniTest::Mock.new.expect(:call, nil)
    pinless.stub(:stop, mock) do
      board.remove_component(pinless)
    end

    mock.verify
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
denko-0.13.2 test/behaviors/subcomponents_test.rb
denko-0.13.1 test/behaviors/subcomponents_test.rb
denko-0.13.0 test/behaviors/subcomponents_test.rb