зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-08-28 15:26:18 +03:00
* Update rubopcop [WIP] * Further rubocop fixes * Fix rubocop-rails cops * Fix spec * Disable rubocop suggestions * Run rubocop in github actions rather than in codeclimate
60 строки
1.9 KiB
Ruby
60 строки
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Telegram::Bot::UpdatesPoller do
|
|
let(:instance) { described_class.new(bot, controller) }
|
|
let(:bot) { Telegram::Bot::Client.new('token') }
|
|
let(:controller) { double(:controller) }
|
|
|
|
describe '#initialize' do
|
|
subject { instance }
|
|
it { should be }
|
|
end
|
|
|
|
describe '#process_updates' do
|
|
subject { -> { instance.process_updates(updates) } }
|
|
let(:block) { ->(x) { expect(x).to eq expected_results.shift } }
|
|
let(:updates) { [{update_id: 12}, {update_id: 34}].as_json }
|
|
let(:processed_updates) { [] }
|
|
before do
|
|
allow(controller).to receive(:dispatch) do |bot, update|
|
|
expect(bot).to eq self.bot
|
|
processed_updates << update
|
|
end
|
|
end
|
|
|
|
it { should change(instance, :offset).to(updates.last['update_id'] + 1) }
|
|
it { should change(self, :processed_updates).to(updates) }
|
|
|
|
context 'with typed response' do
|
|
let(:updates) { super().map { |x| Telegram::Bot::Types::Update.new(x) } }
|
|
it { should change(instance, :offset).to(updates.last['update_id'] + 1) }
|
|
it { should change(self, :processed_updates).to(updates) }
|
|
end
|
|
end
|
|
|
|
describe '#fetch_updates' do
|
|
subject { instance.fetch_updates }
|
|
let(:updates) { [{update_id: 12}, {update_id: 34}] }
|
|
let(:request_result) { {ok: true, result: updates}.as_json }
|
|
before do
|
|
allow(bot).to receive(:get_updates) do
|
|
expect(bot.async).to be_falsy
|
|
request_result
|
|
end
|
|
end
|
|
|
|
it { should eq updates.as_json }
|
|
|
|
context 'with typed response' do
|
|
let(:updates) { super().map { |x| Telegram::Bot::Types::Update.new(x.as_json) } }
|
|
let(:request_result) { updates }
|
|
it { should eq updates }
|
|
end
|
|
|
|
context 'when bot is in async mode' do
|
|
let(:bot) { Telegram::Bot::Client.new('token', async: Class.new) }
|
|
it { should eq updates.as_json }
|
|
end
|
|
end
|
|
end
|