test/unit/widget_test.rb in apotomo-0.1.4 vs test/unit/widget_test.rb in apotomo-1.0.0.beta1
- old
+ new
@@ -1,17 +1,26 @@
require 'test_helper'
class WidgetTest < ActiveSupport::TestCase
+ include Apotomo::TestCaseMethods::TestController
+
+ context "The constructor" do
+ should "accept the parent_controller as first arg" do
+ assert_kind_of ActionController::Base, @controller
+ @mum = Apotomo::Widget.new(@controller, 'mum', :squeak)
+ end
+ end
+
context "Widget.has_widgets" do
setup do
@mum = Class.new(MouseCell) do
has_widgets do |me|
me << widget('mouse_cell', 'baby', :squeak)
end
- end.new('mum', :squeak)
+ end.new(@controller, 'mum', :squeak)
- @kid = Class.new(@mum.class).new('mum', :squeak)
+ @kid = Class.new(@mum.class).new(@controller, 'mum', :squeak)
end
should "setup the widget family at creation time" do
assert_equal 1, @mum.children.size
assert_kind_of Apotomo::StatefulWidget, @mum['baby']
@@ -27,11 +36,11 @@
setup do
@mum = Class.new(MouseCell) do
after_add do |me, parent|
parent << widget('mouse_cell', 'kid', :squeak)
end
- end.new('mum', :squeak)
+ end.new(@controller, 'mum', :squeak)
@root = mouse_mock('root')
end
should "be invoked after mum is added" do
@@ -40,80 +49,84 @@
assert_equal ['mum', 'kid'], @root.children.collect { |w| w.name }
end
should "inherit callbacks for now" do
- @berry = Class.new(@mum.class).new('berry', :squeak)
+ @berry = Class.new(@mum.class).new(@controller, 'berry', :squeak)
@root << @berry
assert_equal ['berry', 'kid'], @root.children.collect { |w| w.name }
end
end
context "A stateless widget" do
setup do
- @mum = Apotomo::Widget.new('mum', :squeak)
+ @mum = Apotomo::Widget.new(@controller, 'mum', :squeak)
end
context "responding to #address_for_event" do
- should "accept an event :type" do
- assert_equal({:type => :squeak, :source => 'mum'}, @mum.address_for_event(:type => :squeak))
- end
-
- should "accept a :source" do
- assert_equal({:type => :squeak, :source => 'kid'}, @mum.address_for_event(:type => :squeak, :source => 'kid'))
- end
-
- should "accept arbitrary options" do
- assert_equal({:type => :squeak, :volume => 'loud', :source => 'mum'}, @mum.address_for_event(:type => :squeak, :volume => 'loud'))
- end
-
- should "complain if no type given" do
- assert_raises RuntimeError do
- @mum.address_for_event(:source => 'mum')
- end
- end
+ should "accept an event :type" do
+ assert_equal({:type => :squeak, :source => 'mum'}, @mum.address_for_event(:type => :squeak))
end
- context "implementing visibility" do
- should "per default respond to #visible?" do
- assert @mum.visible?
- end
-
- should "expose a setter therefore" do
- @mum.visible = false
- assert_not @mum.visible?
- end
-
- context "in a widget family" do
- setup do
- @mum << @jerry = mouse_mock('jerry')
- @mum << @berry = mouse_mock('berry')
- end
-
- should "per default return all #visible_children" do
- assert_equal [@jerry, @berry], @mum.visible_children
- assert_equal [], @jerry.visible_children
- end
-
- should "hide berry in #visible_children if he's invisible" do
- @berry.visible = false
- assert_equal [@jerry], @mum.visible_children
- end
- end
+ should "accept a :source" do
+ assert_equal({:type => :squeak, :source => 'kid'}, @mum.address_for_event(:type => :squeak, :source => 'kid'))
end
- should "respond to #find_widget" do
- mum_and_kid!
- assert_not @mum.find_widget('pet')
- assert_equal @kid, @mum.find_widget('kid')
+ should "accept arbitrary options" do
+ assert_equal({:type => :squeak, :volume => 'loud', :source => 'mum'}, @mum.address_for_event(:type => :squeak, :volume => 'loud'))
end
- should "respond to the WidgetShortcuts methods, like #widget" do
- assert_respond_to @mum, :widget
+ should "complain if no type given" do
+ assert_raises RuntimeError do
+ @mum.address_for_event(:source => 'mum')
+ end
end
+ end
+
+ context "implementing visibility" do
+ should "per default respond to #visible?" do
+ assert @mum.visible?
+ end
- should "alias #widget_id to #name" do
- assert_equal @mum.name, @mum.widget_id
+ should "expose a setter therefore" do
+ @mum.visible = false
+ assert_not @mum.visible?
end
+
+ context "in a widget family" do
+ setup do
+ @mum << @jerry = mouse_mock('jerry')
+ @mum << @berry = mouse_mock('berry')
+ end
+
+ should "per default return all #visible_children" do
+ assert_equal [@jerry, @berry], @mum.visible_children
+ assert_equal [], @jerry.visible_children
+ end
+
+ should "hide berry in #visible_children if he's invisible" do
+ @berry.visible = false
+ assert_equal [@jerry], @mum.visible_children
+ end
+ end
end
+
+ should "respond to #find_widget" do
+ mum_and_kid!
+ assert_not @mum.find_widget('pet')
+ assert_equal @kid, @mum.find_widget('kid')
+ end
+
+ should "respond to the WidgetShortcuts methods, like #widget" do
+ assert_respond_to @mum, :widget
+ end
+
+ should "respond to #parent_controller" do
+ assert_equal @controller, @mum.parent_controller
+ end
+
+ should "alias #widget_id to #name" do
+ assert_equal @mum.name, @mum.widget_id
+ end
+ end
end