зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-09-08 11:55:51 +03:00
@@ -2,5 +2,8 @@ language: ruby
|
|||||||
cache: bundler
|
cache: bundler
|
||||||
rvm:
|
rvm:
|
||||||
- 2.2.3
|
- 2.2.3
|
||||||
|
env:
|
||||||
|
- RAILS=4
|
||||||
|
- RAILS=5
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|||||||
7
Gemfile
7
Gemfile
@@ -1,6 +1,13 @@
|
|||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
|
case ENV['RAILS']
|
||||||
|
when '5'
|
||||||
|
gem 'actionpack', '5.0.0.rc1'
|
||||||
|
when '4'
|
||||||
|
gem 'actionpack', '~> 4.2'
|
||||||
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
gem 'sdoc', '~> 0.4.1'
|
gem 'sdoc', '~> 0.4.1'
|
||||||
gem 'pry', '~> 0.10.1'
|
gem 'pry', '~> 0.10.1'
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ module Telegram
|
|||||||
|
|
||||||
include AbstractController::Callbacks
|
include AbstractController::Callbacks
|
||||||
# Redefine callbacks with default terminator.
|
# Redefine callbacks with default terminator.
|
||||||
if ActiveSupport.gem_version >= Gem::Version.new('5')
|
if ActiveSupport::VERSION::MAJOR >= 5
|
||||||
define_callbacks :process_action,
|
define_callbacks :process_action,
|
||||||
skip_after_callbacks_if_terminated: true
|
skip_after_callbacks_if_terminated: true
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -225,12 +225,12 @@ RSpec.describe Telegram::Bot::UpdatesController do
|
|||||||
it { should change(controller, :acted).to true }
|
it { should change(controller, :acted).to true }
|
||||||
its(:call) { should eq [nil, nil, args] }
|
its(:call) { should eq [nil, nil, args] }
|
||||||
|
|
||||||
context 'when callback returns false' do
|
context 'when callback halts chain' do
|
||||||
before do
|
before do
|
||||||
controller_class.prepend(Module.new do
|
controller_class.prepend(Module.new do
|
||||||
def hook
|
def hook
|
||||||
super
|
super
|
||||||
false
|
ActiveSupport::VERSION::MAJOR >= 5 ? throw(:abort) : false
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user