diff --git a/lib/telegram/bot/updates_controller/reply_helpers.rb b/lib/telegram/bot/updates_controller/reply_helpers.rb index 3e90954..2a82856 100644 --- a/lib/telegram/bot/updates_controller/reply_helpers.rb +++ b/lib/telegram/bot/updates_controller/reply_helpers.rb @@ -42,8 +42,8 @@ module Telegram # Edit message from callback query. def edit_message(type, params = {}) params = - if query_id = payload['inline_message_id'] # rubocop:disable AssignmentInCondition - params.merge(inline_query_id: query_id) + if message_id = payload['inline_message_id'] # rubocop:disable AssignmentInCondition + params.merge(inline_message_id: message_id) elsif message = payload['message'] # rubocop:disable AssignmentInCondition params.merge(chat_id: message['chat']['id'], message_id: message['message_id']) else diff --git a/spec/telegram/bot/updates_controller/reply_helpers_spec.rb b/spec/telegram/bot/updates_controller/reply_helpers_spec.rb index c29111d..d5f2e0c 100644 --- a/spec/telegram/bot/updates_controller/reply_helpers_spec.rb +++ b/spec/telegram/bot/updates_controller/reply_helpers_spec.rb @@ -50,6 +50,30 @@ RSpec.describe Telegram::Bot::UpdatesController do end describe '#edit_message' do - skip 'TODO' + subject { controller.edit_message(type, params) } + let(:type) { :reply_markup } + + it { expect { subject }.to raise_error(/Can not edit message without/) } + + context 'when inline_message_id is present' do + let(:payload) { {inline_message_id: double(:message_id)} } + it 'sets inline_message_id' do + expect(bot).to receive("edit_message_#{type}").with(params.merge( + inline_message_id: payload[:inline_message_id], + )) { result } + should eq result + end + end + + context 'when message is present' do + let(:payload) { {message: super().merge(chat: chat)} } + it 'sets chat_id & message_id' do + expect(bot).to receive("edit_message_#{type}").with(params.merge( + message_id: payload[:message][:message_id], + chat_id: payload[:message][:chat]['id'], + )) { result } + should eq result + end + end end end