1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
require 'test_helper'
require 'uber/delegates'
class DelegatesTest < Minitest::Spec
class Song
extend Uber::Delegates
delegates :model, :title
def model
Struct.new(:title).new("Helloween")
end
def title
super.downcase
end
end
# allows overriding in class.
it { Song.new.title.must_equal "helloween" }
module Title
extend Uber::Delegates
delegates :model, :title, :id
end
class Album
include Title
def model
Struct.new(:title, :id).new("Helloween", 1)
end
def title
super.downcase
end
end
# allows overriding in class inherited from module.
it { Album.new.title.must_equal "helloween" }
it { Album.new.id.must_equal 1 }
end
|