Sha256: 4d815b6821cf7f90a7ac90bec366257d69cf4bf75d8ec9b04209113887d04a76
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
# frozen_string_literal: true module Telegram module Bot # Stubbed client for tests. Saves all requests into #requests hash. class ClientStub < Client attr_reader :requests module StubbedConstructor def new(*args, **kwargs) if self == ClientStub || !ClientStub.stub_all? super else ClientStub.new(*args, **kwargs) end end end class << self # Any call to Client.new will return ClientStub instance when `enabled` is true. # Can be used with a block. def stub_all!(enabled = true) # rubocop:disable Style/OptionalBooleanParameter 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(token = nil, username = nil, **options) # rubocop:disable Lint/MissingSuper @token = token || options[:token] @username = username || options[:username] || token reset end def reset @requests = Hash.new { |h, k| h[k] = [] } end def request(action, body = {}) requests[action.to_sym] << body end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
telegram-bot-0.16.5 | lib/telegram/bot/client_stub.rb |
telegram-bot-0.16.4 | lib/telegram/bot/client_stub.rb |
telegram-bot-0.16.3 | lib/telegram/bot/client_stub.rb |