require 'cucumber/formatter/errors' module Cucumber module Formatter module Query class HookByTestStep def initialize(config) @hook_id_by_test_step_id = {} config.on_event :test_step_created, &method(:on_test_step_created) config.on_event :hook_test_step_created, &method(:on_hook_test_step_created) end def hook_id(test_step) return @hook_id_by_test_step_id[test_step.id] if @hook_id_by_test_step_id.key?(test_step.id) raise TestStepUnknownError, "No hook found for #{test_step.id} }. Known: #{@hook_id_by_test_step_id.keys}" end private def on_test_step_created(event) @hook_id_by_test_step_id[event.test_step.id] = nil end def on_hook_test_step_created(event) @hook_id_by_test_step_id[event.test_step.id] = event.hook.id end end end end end