From e61da465c17626d5751283c4afa433eea7eba7a0 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Mon, 2 Mar 2015 20:40:10 -0300 Subject: [PATCH 1/2] Adding the event name to the callback call. Given the presence of the :any event it can be helpful to know which event was fired. It is also possible that we are passing a reused anonymous function to the event. In that case, it is helpful to know which event fired. --- lib/micromachine.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/micromachine.rb b/lib/micromachine.rb index b30c91f..aed0fad 100644 --- a/lib/micromachine.rb +++ b/lib/micromachine.rb @@ -23,7 +23,7 @@ def trigger(event) if trigger?(event) @state = transitions_for[event][@state] callbacks = @callbacks[@state] + @callbacks[:any] - callbacks.each { |callback| callback.call } + callbacks.each { |callback| callback.call(event) } true else false From 7cf82afe0d0c03207ed84e19ad30adae9790df95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Rodr=C3=ADguez?= Date: Mon, 2 Mar 2015 20:43:25 -0300 Subject: [PATCH 2/2] Add test for passing event name to the callback call. --- test/callbacks.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/callbacks.rb b/test/callbacks.rb index 4532456..2698305 100644 --- a/test/callbacks.rb +++ b/test/callbacks.rb @@ -27,3 +27,18 @@ machine.trigger(:reset) assert_equal "Pending", @current end + +test "passing the event name to the callbacks" do + event_name = nil + + machine = MicroMachine.new(:pending) + machine.when(:confirm, pending: :confirmed) + + machine.on(:confirmed) do |event| + event_name = event + end + + machine.trigger(:confirm) + + assert_equal(:confirm, event_name) +end