From 9b3fb562a3644123998b7d63c46b2b08c5d3db0c Mon Sep 17 00:00:00 2001 From: Max Melentiev Date: Wed, 11 May 2016 22:13:45 +0300 Subject: [PATCH] Fixed MessageContext for messages without text --- .../bot/updates_controller/message_context.rb | 6 +++--- .../bot/updates_controller/message_context_spec.rb | 12 ++++++++++++ spec/telegram/bot/updates_controller_spec.rb | 5 +++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/telegram/bot/updates_controller/message_context.rb b/lib/telegram/bot/updates_controller/message_context.rb index bf001f9..4f3fead 100644 --- a/lib/telegram/bot/updates_controller/message_context.rb +++ b/lib/telegram/bot/updates_controller/message_context.rb @@ -24,7 +24,7 @@ module Telegram # # # To run other action with all the callbacks: # context_handler :rename do |message| - # process(:rename, *m['text'].split) + # process(:rename, *m['text'].try!(:split)) # Message can be without text # end # # # Or just @@ -32,7 +32,7 @@ module Telegram # context_handler :rename # to call :rename # # # For messages without context use this instead of `message` method: - # context_handle do |message| + # context_handler do |message| # end # def context_handler(context = nil, action = nil, &block) @@ -56,7 +56,7 @@ module Telegram if handler.respond_to?(:call) instance_exec(message, &handler) else - process(handler, *message['text'].split) + process(handler, *message['text'].try!(:split)) end end diff --git a/spec/telegram/bot/updates_controller/message_context_spec.rb b/spec/telegram/bot/updates_controller/message_context_spec.rb index 38ac962..11d821f 100644 --- a/spec/telegram/bot/updates_controller/message_context_spec.rb +++ b/spec/telegram/bot/updates_controller/message_context_spec.rb @@ -54,6 +54,11 @@ RSpec.describe Telegram::Bot::UpdatesController::MessageContext do its(:call) { should eq [:block_result, payload] } it { should_not change(controller, :filter_done) } it { should change { session[:context] }.to nil } + + context 'when message has no text' do + let(:payload) { {'audio' => {'file_id' => 123}} } + its(:call) { should eq [:block_result, payload] } + end end context 'when context is handled by short redirect' do @@ -61,6 +66,13 @@ RSpec.describe Telegram::Bot::UpdatesController::MessageContext do its(:call) { should eq [:method_result, *text.split] } it { should change(controller, :filter_done).to true } it { should change { session[:context] }.to nil } + + context 'when message has no text' do + let(:payload) { {'audio' => {'file_id' => 123}} } + its(:call) { should eq [:method_result] } + it { should change(controller, :filter_done).to true } + it { should change { session[:context] }.to nil } + end end context 'when context is handled by custom redirect' do diff --git a/spec/telegram/bot/updates_controller_spec.rb b/spec/telegram/bot/updates_controller_spec.rb index 5ea9bcf..88f5c51 100644 --- a/spec/telegram/bot/updates_controller_spec.rb +++ b/spec/telegram/bot/updates_controller_spec.rb @@ -109,6 +109,11 @@ RSpec.describe Telegram::Bot::UpdatesController do it { should eq [false, 'message', [payload]] } end end + + context 'without text' do + let(:payload) { {'audio' => {'file_id' => 123}} } + it { should eq [false, payload_type, [payload]] } + end end end