Sha256: c5f4b64237122d426eb6b37f3f8b2ca49a0cfc5a51a9ca987f10891bb24c9b0f

Contents?: true

Size: 1012 Bytes

Versions: 1

Compression:

Stored size: 1012 Bytes

Contents

require 'test_helper'

class Person
  extend Direction
  command [:make_me_a_sandwich, :cook] => :@friend
  attr_accessor :friend
end

class Friend
  def make_me_a_sandwich
    Menu.record "I made a sandwich!"
  end

  def cook(what)
    Menu.record what
  end
end

module Menu
  def self.record(text)
    list << text
  end
  def self.list
    @list ||= []
  end
  def self.clear
    @list = []
  end
end

describe Direction do
  let(:friend){ Friend.new }
  let(:person){ person = Person.new
                person.friend = friend
                person
              }
  before do
    Menu.clear
  end
  it 'forwards a message to another object' do
    assert_equal [], Menu.list
    person.make_me_a_sandwich
    assert_includes Menu.list, "I made a sandwich!"
  end
  
  it 'returns the original receiver' do
    assert_equal person, person.make_me_a_sandwich
  end

  it 'forwards additional arguments' do
    assert_equal [], Menu.list
    person.cook('yum')
    assert_includes Menu.list, "yum"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
direction-0.0.2 test/direction_test.rb