diff --git a/lib/telebugs/middleware_stack.rb b/lib/telebugs/middleware_stack.rb index e7ee4ef..8cbc917 100644 --- a/lib/telebugs/middleware_stack.rb +++ b/lib/telebugs/middleware_stack.rb @@ -21,6 +21,10 @@ def use(new_middleware) @middlewares = (@middlewares << new_middleware).sort_by(&:weight).reverse end + def delete(middleware_class) + @middlewares.delete_if { |middleware| middleware.instance_of?(middleware_class) } + end + def call(report) @middlewares.each do |middleware| middleware.call(report) diff --git a/test/test_middleware_stack.rb b/test/test_middleware_stack.rb index 2c10b0f..a4c9508 100644 --- a/test/test_middleware_stack.rb +++ b/test/test_middleware_stack.rb @@ -54,4 +54,14 @@ def test_weight stack.middlewares.map(&:class) ) end + + def test_delete + stack = Telebugs::MiddlewareStack.new + stack.use TestFilteringMiddleware.new + stack.use TestStartLineMiddleware.new + + stack.delete TestFilteringMiddleware + + assert_equal [TestStartLineMiddleware], stack.middlewares.map(&:class) + end end