зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-04 10:15:50 +03:00
botan.io tracker
Этот коммит содержится в:
@@ -1,10 +1,12 @@
|
||||
RSpec.describe Telegram::Bot::Client do
|
||||
let(:instance) { described_class.new 'token' }
|
||||
let(:token) { 'token' }
|
||||
let(:botan_token) { double(:botan_token) }
|
||||
|
||||
describe '.wrap' do
|
||||
subject { described_class.wrap(input) }
|
||||
let(:result) { double(:result) }
|
||||
let(:token) { 'token' }
|
||||
let(:username) { 'username' }
|
||||
let(:instance) { described_class.new 'token' }
|
||||
|
||||
context 'when input is a string' do
|
||||
let(:input) { token }
|
||||
@@ -19,9 +21,20 @@ RSpec.describe Telegram::Bot::Client do
|
||||
let(:input) { {token: token, username: username, ignore: :ignore} }
|
||||
|
||||
it 'extracts token & username' do
|
||||
expect(described_class).to receive(:new).with(token, username) { result }
|
||||
expect(described_class).to receive(:new).
|
||||
with(token, username, botan: nil) { result }
|
||||
should eq result
|
||||
end
|
||||
|
||||
context 'when `botan` is given' do
|
||||
let(:input) { super().merge(botan: botan_token) }
|
||||
|
||||
it 'passes it to initializer' do
|
||||
expect(described_class).to receive(:new).
|
||||
with(token, username, botan: botan_token) { result }
|
||||
should eq result
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when input is an instance of described_class' do
|
||||
@@ -50,7 +63,7 @@ RSpec.describe Telegram::Bot::Client do
|
||||
|
||||
it 'calls wrap for every element' do
|
||||
expect(described_class).to receive(:new).with('other_token') { result }
|
||||
expect(described_class).to receive(:new).with(token, username) { result_2 }
|
||||
expect(described_class).to receive(:new).with(token, username, botan: nil) { result_2 }
|
||||
should eq [result, instance, result_2]
|
||||
end
|
||||
end
|
||||
@@ -74,4 +87,15 @@ RSpec.describe Telegram::Bot::Client do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#botan' do
|
||||
subject { instance.botan }
|
||||
it { should eq nil }
|
||||
|
||||
context 'when botan token is set' do
|
||||
let(:instance) { described_class.new token, botan: botan_token }
|
||||
it { should be_instance_of Telegram::Bot::Botan }
|
||||
its(:token) { should eq botan_token }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
54
spec/telegram/bot/updates_controller/botan_spec.rb
Обычный файл
54
spec/telegram/bot/updates_controller/botan_spec.rb
Обычный файл
@@ -0,0 +1,54 @@
|
||||
RSpec.describe Telegram::Bot::UpdatesController::Botan do
|
||||
include_context 'telegram/bot/updates_controller'
|
||||
let(:controller_class) do
|
||||
described_class = self.described_class
|
||||
Class.new(Telegram::Bot::UpdatesController) do
|
||||
include described_class
|
||||
end
|
||||
end
|
||||
let(:botan) { double(:botan) }
|
||||
let(:result) { double(:result) }
|
||||
let(:payload) { {from: {id: user_id}} }
|
||||
let(:payload_type) { :message }
|
||||
let(:user_id) { double(:user_id) }
|
||||
before { allow(bot).to receive(:botan) { botan } }
|
||||
|
||||
shared_examples 'basic tracking' do
|
||||
context 'when botan is not configured' do
|
||||
let(:botan) {}
|
||||
it { should eq nil }
|
||||
end
|
||||
|
||||
context 'when `from` is empty' do
|
||||
let(:payload) { {text: 'test'} }
|
||||
it { expect { subject }.to raise_error described_class::MissingFrom }
|
||||
end
|
||||
end
|
||||
|
||||
describe '#botan_track' do
|
||||
subject { controller.send(:botan_track, event, data) }
|
||||
let(:event) { double(:event) }
|
||||
let(:data) { double(:data) }
|
||||
|
||||
it 'calls botan#track' do
|
||||
expect(botan).to receive(:track).with(event, user_id, data) { result }
|
||||
should eq result
|
||||
end
|
||||
|
||||
include_examples 'basic tracking'
|
||||
end
|
||||
|
||||
describe '#botan_track_action' do
|
||||
subject { controller.send(:botan_track_action) }
|
||||
let(:action_name) { double(:action_name) }
|
||||
|
||||
it 'calls botan#track with current action and payload' do
|
||||
expect(controller).to receive(:action_name) { action_name }
|
||||
expect(botan).to receive(:track).
|
||||
with(action_name, user_id, deep_stringify(payload)) { result }
|
||||
should eq result
|
||||
end
|
||||
|
||||
include_examples 'basic tracking'
|
||||
end
|
||||
end
|
||||
Ссылка в новой задаче
Block a user