Sha256: 91d49268e4f78ed8c8bb55719a99a4b1fa5872df8a19e60b07e856d052617545

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'test_helper'

class Person
  extend Direction
  command [:make_me_a_sandwich, :cook] => :@friend
  query [:activities, :go] => :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

  def activities
    'running, biking, hiking'
  end

  def go(do_what)
    Activities.record do_what
  end
end

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

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

describe Direction, 'command' 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

describe Direction, 'query' do
  let(:friend){ Friend.new }
  let(:person){ person = Person.new
                person.friend = friend
                person
              }
  before do
    Activities.clear
  end

  it 'forwards a message to another object' do
    assert_includes person.activities, "running, biking, hiking"
  end

  it 'forwards additional arguments' do
    assert_equal [], Activities.list
    person.go('have fun')
    assert_includes Activities.list, "have fun"
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
direction-0.0.3 test/direction_test.rb