From c04884040d37d80f89671152bea25986659be841 Mon Sep 17 00:00:00 2001 From: Max Melentiev Date: Mon, 14 Mar 2016 14:19:57 +0600 Subject: [PATCH] Client.wrap supports symbols --- lib/telegram/bot/client.rb | 3 +++ lib/telegram/bot/routes_helper.rb | 4 +++- spec/telegram/bot/client_spec.rb | 11 +++++++++++ spec/telegram/bot/routes_helper_spec.rb | 4 +++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/telegram/bot/client.rb b/lib/telegram/bot/client.rb index c2193ef..ae058b3 100644 --- a/lib/telegram/bot/client.rb +++ b/lib/telegram/bot/client.rb @@ -19,6 +19,9 @@ module Telegram when Hash then input = input.stringify_keys new input['token'], input['username'] + when Symbol + Telegram.bots[input] or + raise "Bot #{input} not configured, check Telegram.bots_config." else new(input) end diff --git a/lib/telegram/bot/routes_helper.rb b/lib/telegram/bot/routes_helper.rb index 497a96c..1984a59 100644 --- a/lib/telegram/bot/routes_helper.rb +++ b/lib/telegram/bot/routes_helper.rb @@ -42,7 +42,9 @@ module Telegram # # You can override this options or specify others: # telegram_webhooks TelegramController, as: :my_webhook # telegram_webhooks bot => [TelegramChatController, as: :chat_webhook], - # other_bot => [TelegramAuctionController, + # other_bot => TelegramAuctionController, + # admin_chat: TelegramAdminChatController + # def telegram_webhooks(controllers, bots = nil, **options) unless controllers.is_a?(Hash) bots = bots ? Array.wrap(bots) : Telegram.bots.values diff --git a/spec/telegram/bot/client_spec.rb b/spec/telegram/bot/client_spec.rb index 836261d..d967d4b 100644 --- a/spec/telegram/bot/client_spec.rb +++ b/spec/telegram/bot/client_spec.rb @@ -33,6 +33,17 @@ RSpec.describe Telegram::Bot::Client do end end + context 'when input is a Symbol' do + let(:input) { :bot_1 } + before { allow(Telegram).to receive(:bots) { {bot_1: instance} } } + it { should eq Telegram.bots[:bot_1] } + + context 'and there is no such bot' do + let(:input) { :invalid } + it { expect { subject }.to raise_error(/not configured/) } + end + end + context 'when input is an array' do let!(:input) { ['other_token', instance, token: token, username: username] } let(:result_2) { double(:result_2) } diff --git a/spec/telegram/bot/routes_helper_spec.rb b/spec/telegram/bot/routes_helper_spec.rb index c4aa1da..f0f64db 100644 --- a/spec/telegram/bot/routes_helper_spec.rb +++ b/spec/telegram/bot/routes_helper_spec.rb @@ -78,6 +78,7 @@ RSpec.describe Telegram::Bot::RoutesHelper do { bot => controller, 'custom_token' => [other_controller, as: :custom_route, option: :other_val], + other: controller, }, option: :val, ] @@ -90,7 +91,8 @@ RSpec.describe Telegram::Bot::RoutesHelper do other_controller, :custom_route, option: :other_val, - ] + ], + [Telegram.bots[:other], controller, 'other_telegram_webhook', option: :val] end end