Skip to content

Commit

Permalink
Hide Delegate.
Browse files Browse the repository at this point in the history
  • Loading branch information
josemotanet committed May 29, 2013
1 parent 0f59d6c commit d412059
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 0 deletions.
5 changes: 5 additions & 0 deletions hide-delegate/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
require 'rake/testtask'

Rake::TestTask.new do |t|
t.pattern = 'test/*test.rb'
end
32 changes: 32 additions & 0 deletions hide-delegate/lib/after.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
class Client
attr_reader :clerk

def initialize clerk
@clerk = clerk
end
end

class Clerk
attr_reader :department

def initialize (department)
@department = department
end

def manager
department.manager
end
end

class Manager
attr_accessor :department
end

class Department
attr_reader :manager
def initialize manager
@manager = manager

manager.department = self
end
end
33 changes: 33 additions & 0 deletions hide-delegate/lib/before.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
class Client
attr_reader :department, :clerk

def initialize department, clerk
@department = department
@clerk = clerk
end
end

class Manager
attr_accessor :department
end

class Clerk
attr_reader :department

def initialize(department)
@department = department
end

def manager
department.manager
end
end

class Department
attr_reader :manager
def initialize manager
@manager = manager

manager.department = self
end
end
26 changes: 26 additions & 0 deletions hide-delegate/test/test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
require 'minitest/spec'
require 'minitest/autorun'

require 'before' if ENV["BEFORE"]
require 'after' unless ENV["BEFORE"]

describe Client do
let(:manager) { Manager.new }
let(:department) { Department.new(manager) }
let(:clerk) { Clerk.new(department) }

if ENV["BEFORE"]
it "wants to know about the manager through a department" do
client = Client.new(department, clerk)

client.department.manager.wont_be_nil
end

else
it "should rather be guided by a clerk to access that info" do
client = Client.new(clerk)

client.clerk.manager.wont_be_nil
end
end
end

0 comments on commit d412059

Please sign in to comment.