test/unit/event_methods_test.rb in apotomo-1.1.0 vs test/unit/event_methods_test.rb in apotomo-1.1.1
- old
+ new
@@ -1,10 +1,15 @@
require 'test_helper'
class EventMethodsTest < Test::Unit::TestCase
include Apotomo::TestCaseMethods::TestController
+ def handler(id, state)
+ Apotomo::InvokeEventHandler.new(:widget_id => id, :state => state)
+ end
+
+
context "#respond_to_event and #fire" do
setup do
mum_and_kid!
end
@@ -68,31 +73,59 @@
@mum.fire :answer_squeak, :volume => 9
assert_equal [{:volume => 9}], @mum.list
end
+
+ context "#responds_to_event with :passing" do
+ setup do
+ class AdolescentMouse < MouseWidget
+ responds_to_event :squeak, :passing => :root
+ end
+
+ @root = mouse_mock(:root)
+ end
+
+ should "add handlers to root when called with :passing" do
+ @root << AdolescentMouse.new(parent_controller, 'jerry')
+
+ assert_equal [handler('jerry', :squeak)], @root.event_table.all_handlers_for(:squeak, 'jerry')
+ end
+
+ should "inherit :passing handlers" do
+ @root << Class.new(AdolescentMouse).new(parent_controller, 'jerry')
+
+ assert_equal [handler('jerry', :squeak)], @root.event_table.all_handlers_for(:squeak, 'jerry')
+ end
+
+ end
+
context "#responds_to_event in class context" do
setup do
class AdultMouse < MouseWidget
responds_to_event :peep, :with => :answer_squeak
end
class BabyMouse < AdultMouse
+ responds_to_event :peep
responds_to_event :footsteps, :with => :squeak
end
+
+ @mum = AdultMouse.new(parent_controller, 'mum')
end
should "add the handlers at creation time" do
- assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'mum', :show).event_table.all_handlers_for(:peep, 'mum')
+ assert_equal [handler('mum', :answer_squeak)], @mum.event_table.all_handlers_for(:peep, 'mum')
end
- should "not inherit handlers for now" do
- assert_equal [], BabyMouse.new(parent_controller, 'kid', :show).event_table.all_handlers_for(:peep, 'kid')
+ should "inherit handlers" do
+ @peep_handlers = BabyMouse.new(parent_controller, 'kid', :show).event_table.all_handlers_for(:peep, 'kid')
+ assert_equal [handler('kid', :answer_squeak), handler('kid', :peep)], @peep_handlers
end
- should "not add the same handler to each instance" do
- assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'mum', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'mum', :show).event_table.all_handlers_for(:peep, 'mum')
+ should "not share responds_to_event options between different instances" do
+ assert_equal [handler('mum', :answer_squeak)], @mum.event_table.all_handlers_for(:peep, 'mum')
- assert_equal [Apotomo::InvokeEventHandler.new(:widget_id => 'dad', :state => :answer_squeak)], AdultMouse.new(parent_controller, 'dad', :show).event_table.all_handlers_for(:peep, 'dad')
+ assert_equal [handler('dad', :answer_squeak)], AdultMouse.new(parent_controller, 'dad', :show).event_table.all_handlers_for(:peep, 'dad')
end
end
context "#trigger" do
should "be an alias for #fire" do