зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-04 02:05:52 +03:00
Update to Bot API 5.0, add rake tasks for deleteWebhook, close & logOut
Этот коммит содержится в:
74
spec/integration/tasks_spec.rb
Обычный файл
74
spec/integration/tasks_spec.rb
Обычный файл
@@ -0,0 +1,74 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'integration_helper'
|
||||
|
||||
RSpec.describe Telegram::Bot::Tasks, type: :request do
|
||||
include Telegram::Bot::RSpec::ClientMatchers
|
||||
|
||||
def stub_env(new_values)
|
||||
new_values.stringify_keys!
|
||||
old_values = ENV.to_h.slice(new_values.keys)
|
||||
new_values.each { |k, v| ENV[k] = v.to_s }
|
||||
yield
|
||||
ensure
|
||||
new_values.each_key { |k| ENV[k] = old_values[k] }
|
||||
end
|
||||
|
||||
shared_examples 'uses BOT envar' do |bot_matcher|
|
||||
it 'runs for all bots by default' do
|
||||
matcher = Telegram.bots.values.map { |x| instance_exec(x, &bot_matcher) }.reduce(&:and)
|
||||
expect(subject).to matcher
|
||||
end
|
||||
|
||||
context 'when BOT specified' do
|
||||
around { |ex| stub_env(BOT: :other) { ex.run } }
|
||||
|
||||
it 'runs for this bot only' do
|
||||
expect(subject).to instance_exec(Telegram.bots[:other], &bot_matcher)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#log_out' do
|
||||
subject { -> { described_class.log_out } }
|
||||
include_examples 'uses BOT envar', ->(bot) { make_telegram_request(bot, :logOut) }
|
||||
end
|
||||
|
||||
describe '#close' do
|
||||
subject { -> { described_class.close } }
|
||||
include_examples 'uses BOT envar', ->(bot) { make_telegram_request(bot, :close) }
|
||||
end
|
||||
|
||||
describe '#set_webhook' do
|
||||
subject { -> { described_class.set_webhook } }
|
||||
include_examples 'uses BOT envar', ->(bot) { make_telegram_request(bot, :setWebhook) }
|
||||
|
||||
context 'with options in env' do
|
||||
around do |ex|
|
||||
stub_env(IP_ADDRESS: '1.2.3.4', DROP_PENDING_UPDATES: 'TrUe') do
|
||||
ex.run
|
||||
end
|
||||
end
|
||||
include_examples 'uses BOT envar', ->(bot) {
|
||||
make_telegram_request(bot, :setWebhook).with(hash_including(
|
||||
ip_address: '1.2.3.4',
|
||||
drop_pending_updates: true,
|
||||
))
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
describe '#delete_webhook' do
|
||||
subject { -> { described_class.delete_webhook } }
|
||||
include_examples 'uses BOT envar', ->(bot) { make_telegram_request(bot, :deleteWebhook) }
|
||||
|
||||
context 'with options in env' do
|
||||
around { |ex| stub_env(DROP_PENDING_UPDATES: 'TrUe') { ex.run } }
|
||||
include_examples 'uses BOT envar', ->(bot) {
|
||||
make_telegram_request(bot, :deleteWebhook).with(hash_including(
|
||||
drop_pending_updates: true,
|
||||
))
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -14,6 +14,7 @@ class TestApplication < Rails::Application
|
||||
config.eager_load = false
|
||||
config.log_level = :debug
|
||||
config.action_dispatch.show_exceptions = false
|
||||
routes.default_url_options = {host: 'test.rpsec'}
|
||||
|
||||
telegram_config = {
|
||||
bot: 'default_token',
|
||||
|
||||
Ссылка в новой задаче
Block a user