1
0
зеркало из https://github.com/glebtv/telegram-bot.git synced 2026-09-07 19:35:52 +03:00

Middleware is rails5-compatible

Этот коммит содержится в:
Max Melentiev
2016-06-02 19:38:29 +03:00
родитель 028849a617
Коммит 7c1f1b5b63
2 изменённых файлов: 24 добавлений и 4 удалений

Просмотреть файл

@@ -1,6 +1,8 @@
require 'active_support/concern' require 'active_support/concern'
require 'active_support/core_ext/hash/indifferent_access'
require 'active_support/json'
require 'action_dispatch/http/mime_type' require 'action_dispatch/http/mime_type'
require 'action_dispatch/middleware/params_parser' require 'action_dispatch/http/request'
module Telegram module Telegram
module Bot module Bot
@@ -13,7 +15,8 @@ module Telegram
end end
def call(env) def call(env)
update = env['action_dispatch.request.request_parameters'] request = ActionDispatch::Request.new(env)
update = request.request_parameters
controller.dispatch(bot, update) controller.dispatch(bot, update)
[200, {}, ['']] [200, {}, ['']]
end end

Просмотреть файл

@@ -1,3 +1,5 @@
require 'rack/mock'
RSpec.describe Telegram::Bot::Middleware do RSpec.describe Telegram::Bot::Middleware do
let(:instance) { described_class.new bot, controller } let(:instance) { described_class.new bot, controller }
let(:bot) { double(:bot) } let(:bot) { double(:bot) }
@@ -6,10 +8,25 @@ RSpec.describe Telegram::Bot::Middleware do
describe '#call' do describe '#call' do
subject { instance.call(env) } subject { instance.call(env) }
let(:env) { {'action_dispatch.request.request_parameters' => json_body} } let(:env) { {'action_dispatch.request.request_parameters' => json_body} }
let(:json_body) { double(:json_body) } let(:update) { {'message' => {'id' => 1}} }
let(:env) do
Rack::MockRequest.env_for('/',
method: :post,
input: JSON.dump(update),
'CONTENT_TYPE' => 'application/json',
)
end
require 'action_pack/version'
if ActionPack::VERSION::MAJOR < 5
# Before Rails 5, params are parsed in middleware.
# In Rails 5, they are parsed in Request#request_parameters.
require 'action_dispatch/middleware/params_parser'
let(:instance) { ActionDispatch::ParamsParser.new(super()) }
end
it 'calls dispatch on controller' do it 'calls dispatch on controller' do
expect(controller).to receive(:dispatch).with(bot, json_body) expect(controller).to receive(:dispatch).with(bot, update)
subject subject
end end