lib/telegram/bot/client_stub.rb in telegram-bot-0.4.2 vs lib/telegram/bot/client_stub.rb in telegram-bot-0.5.0
- old
+ new
@@ -2,9 +2,38 @@
module Bot
# Stubbed client for tests. Saves all requests into #requests hash.
class ClientStub < Client
attr_reader :requests
+ module StubbedConstructor
+ def new(*args)
+ if self == ClientStub || !ClientStub.stub_all?
+ super
+ else
+ ClientStub.new(args[1])
+ end
+ end
+ end
+
+ class << self
+ # Makes all
+ def stub_all!(enabled = true)
+ Client.extend(StubbedConstructor) unless Client < StubbedConstructor
+ return @_stub_all = enabled unless block_given?
+ begin
+ old = @_stub_all
+ stub_all!(enabled)
+ yield
+ ensure
+ stub_all!(old)
+ end
+ end
+
+ def stub_all?
+ @_stub_all
+ end
+ end
+
def initialize(username = nil)
@username = username
reset
end