зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-03 17:55:52 +03:00
Deprecate telegram_webhooks in favor of telegram_webhook
Этот коммит содержится в:
@@ -75,9 +75,9 @@ RSpec.configure do |config|
|
||||
require 'telegram/bot/routes_helper'
|
||||
extend Telegram::Bot::RoutesHelper
|
||||
|
||||
telegram_webhooks default: DefaultBotController,
|
||||
other: OtherBotController,
|
||||
named: NamedBotController
|
||||
telegram_webhook DefaultBotController, :default
|
||||
telegram_webhook OtherBotController, :other
|
||||
telegram_webhook NamedBotController, :named
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -40,6 +40,62 @@ RSpec.describe Telegram::Bot::RoutesHelper do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#telegram_webhook' do
|
||||
subject { mapper.telegram_webhook(*input) }
|
||||
let(:mapper) { double(:mapper).tap { |x| x.extend described_class } }
|
||||
let(:bots) { {default: bot, other: other_bot} }
|
||||
let(:controller) { double(:controller, name: :controller) }
|
||||
let(:other_controller) { double(:other_controller, name: :other_controller) }
|
||||
before { allow(Telegram).to receive(:bots) { bots } }
|
||||
|
||||
def assert_routes(bot, controller, route_name, options) # rubocop:disable AbcSize
|
||||
expected_path = options.delete(:path) || "telegram/#{bot.token}"
|
||||
expect(mapper).to receive(:post) do |path, params|
|
||||
expect(path).to eq expected_path
|
||||
middleware = params[:to]
|
||||
expect(middleware.controller).to eq(controller)
|
||||
expect(middleware.bot.token).to eq(bot.token)
|
||||
expect(middleware.bot.username).to eq(bot.username)
|
||||
expect(params[:as]).to eq route_name
|
||||
expect(params).to include(options) if options
|
||||
end
|
||||
subject
|
||||
end
|
||||
|
||||
context 'when called with controller' do
|
||||
let(:input) { [controller, option: :val] }
|
||||
|
||||
it 'creates routes for default bot and this controller' do
|
||||
assert_routes bot, controller, 'default_telegram_webhook', option: :val
|
||||
end
|
||||
|
||||
context 'and bot does not have configured token' do
|
||||
let(:bot) { create_bot(nil) }
|
||||
it 'creates routes for default bot and this controller' do
|
||||
assert_routes bot, controller, 'default_telegram_webhook', option: :val
|
||||
end
|
||||
end
|
||||
|
||||
context 'and bot has colon in token' do
|
||||
let(:bot) { create_bot('some:token') }
|
||||
it 'replaces colon with underscore' do
|
||||
assert_routes bot, controller, 'default_telegram_webhook',
|
||||
option: :val,
|
||||
path: 'telegram/some_token'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when called with controller and smth castable to bot' do
|
||||
let(:input) { [controller, 'custom_token', option: :val] }
|
||||
|
||||
it 'creates routes for every created bot and controller' do
|
||||
assert_routes create_bot('custom_token'), controller, 'telegram_webhook',
|
||||
option: :val
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#telegram_webhooks' do
|
||||
subject { mapper.telegram_webhooks(*input) }
|
||||
let(:mapper) { double(:mapper).tap { |x| x.extend described_class } }
|
||||
@@ -47,6 +103,7 @@ RSpec.describe Telegram::Bot::RoutesHelper do
|
||||
let(:controller) { double(:controller, name: :controller) }
|
||||
let(:other_controller) { double(:other_controller, name: :other_controller) }
|
||||
before { allow(Telegram).to receive(:bots) { bots } }
|
||||
around { |ex| Telegram::Bot.deprecation_0_14.silence { ex.run } }
|
||||
|
||||
def assert_routes(*expected) # rubocop:disable AbcSize
|
||||
expected.each do |(bot, controller, route_name, options)|
|
||||
|
||||
Ссылка в новой задаче
Block a user