lib/telegram/bot/updates_controller/rspec_helpers.rb in telegram-bot-0.13.1 vs lib/telegram/bot/updates_controller/rspec_helpers.rb in telegram-bot-0.14.0

- old
+ new

@@ -1,53 +1,41 @@ require 'telegram/bot/updates_controller/testing' +require 'telegram/bot/rspec/message_helpers' +require 'telegram/bot/rspec/callback_query_helpers' RSpec.shared_context 'telegram/bot/updates_controller' do + include Telegram::Bot::RSpec::ClientMatchers + include_context 'telegram/bot/message_helpers' + include_context 'telegram/bot/callback_query', :callback_query + let(:controller_class) { described_class } let(:controller) do - controller_class.new(bot, update).tap do |x| + controller_class.new(*controller_args).tap do |x| x.extend Telegram::Bot::UpdatesController::Testing end end - let(:update) { build_update(payload_type, payload) } + let(:controller_args) { [bot, deep_stringify(update)] } + let(:update) { {payload_type => payload} } let(:payload_type) { :some_type } let(:payload) { double(:payload) } let(:bot) { Telegram::Bot::ClientStub.new(bot_name) } let(:bot_name) { 'bot' } let(:session) { controller.send(:session) } - let(:from_id) { 123 } - let(:chat_id) { 456 } - let(:default_message_options) { {from: {id: from_id}, chat: {id: chat_id}} } - include Telegram::Bot::RSpec::ClientMatchers - - def dispatch(bot = self.bot, update = self.update) - controller.dispatch_again(bot, update) + # Process update. + def dispatch(update = self.update, bot = self.bot) + controller.dispatch_again(bot, deep_stringify(update)) end - def dispatch_message(text, options = {}) - update = build_update :message, default_message_options.merge(options).merge(text: text) - dispatch bot, update - end - - def build_update(type, content) - deep_stringify type => content - end - + # Same as `.as_json` but mocks-friendly. def deep_stringify(input) case input when Array then input.map(&method(__callee__)) when Hash then input.map { |k, v| [k.to_s, deep_stringify(v)] }.to_h else input end end - - # Matcher to check response. Make sure to define `let(:chat_id)`. - def respond_with_message(expected) - send_telegram_message(bot, expected, chat_id: chat_id) - end end -RSpec.configure do |config| - if config.respond_to?(:include_context) - config.include_context 'telegram/bot/updates_controller', type: :telegram_bot_controller - end +Telegram::Bot::RSpec.with_include_context do |config| + config.include_context 'telegram/bot/updates_controller', type: :telegram_bot_controller end