middleman/middleman-core/lib/vendored-middleman-deps/hooks-0.2.0/test/inheritable_attribute_test.rb
2013-05-23 16:06:20 -07:00

56 lines
1.5 KiB
Ruby

require 'test_helper'
class HooksTest < Test::Unit::TestCase
context "Hooks.define_hook" do
setup do
@klass = Class.new(Object) do
extend Hooks::InheritableAttribute
end
@mum = @klass.new
@klass.inheritable_attr :drinks
end
should "provide a reader with empty inherited attributes, already" do
assert_equal nil, @klass.drinks
end
should "provide a reader with empty inherited attributes in a derived class" do
assert_equal nil, Class.new(@klass).drinks
#@klass.drinks = true
#Class.new(@klass).drinks # TODO: crashes.
end
should "provide an attribute copy in subclasses" do
@klass.drinks = []
assert @klass.drinks.object_id != Class.new(@klass).drinks.object_id
end
should "provide a writer" do
@klass.drinks = [:cabernet]
assert_equal [:cabernet], @klass.drinks
end
should "inherit attributes" do
@klass.drinks = [:cabernet]
subklass_a = Class.new(@klass)
subklass_a.drinks << :becks
subklass_b = Class.new(@klass)
assert_equal [:cabernet], @klass.drinks
assert_equal [:cabernet, :becks], subklass_a.drinks
assert_equal [:cabernet], subklass_b.drinks
end
should "not inherit attributes if we set explicitely" do
@klass.drinks = [:cabernet]
subklass = Class.new(@klass)
subklass.drinks = [:merlot] # we only want merlot explicitely.
assert_equal [:merlot], subklass.drinks # no :cabernet, here
end
end
end