diff --git a/lib/telegram/bot/railtie.rb b/lib/telegram/bot/railtie.rb index e8f6eaa..cc6fee4 100644 --- a/lib/telegram/bot/railtie.rb +++ b/lib/telegram/bot/railtie.rb @@ -18,7 +18,7 @@ module Telegram ActiveSupport.on_load('telegram.bot.updates_controller') do self.logger = options.logger || Rails.logger - self.session_store = options.session_store || Rails.cache + self.session_store = options.session_store if options.session_store end end diff --git a/spec/integration/requests/default_bot_spec.rb b/spec/integration/requests/default_bot_spec.rb index 5d6f40f..3791341 100644 --- a/spec/integration/requests/default_bot_spec.rb +++ b/spec/integration/requests/default_bot_spec.rb @@ -5,4 +5,9 @@ RSpec.describe DefaultBotController, :telegram_bot, type: :request do subject { -> { dispatch_command :start } } it { should respond_with_message 'from default' } end + + describe '#load_session' do + subject { -> { dispatch_command :load_session } } + it { should_not raise_error } + end end diff --git a/spec/integration/requests/other_bot_spec.rb b/spec/integration/requests/other_bot_spec.rb index 7139dc4..ddcdb90 100644 --- a/spec/integration/requests/other_bot_spec.rb +++ b/spec/integration/requests/other_bot_spec.rb @@ -6,4 +6,9 @@ RSpec.describe OtherBotController, :telegram_bot, type: :request do subject { -> { dispatch_command :start } } it { should respond_with_message 'from other' } end + + describe '#load_session' do + subject { -> { dispatch_command :load_session } } + it { should raise_error(/session_store is not configured/) } + end end diff --git a/spec/integration_helper.rb b/spec/integration_helper.rb index 9b23fe7..b625597 100644 --- a/spec/integration_helper.rb +++ b/spec/integration_helper.rb @@ -4,6 +4,7 @@ require 'action_dispatch' require 'action_dispatch/testing/integration' require 'rails' +require 'telegram/bot/railtie' require 'rspec/rails/adapters' require 'rspec/rails/fixture_support' require 'rspec/rails/example/rails_example_group' @@ -13,6 +14,7 @@ ENV['RAILS_ENV'] = 'test' class TestApplication < Rails::Application config.eager_load = false config.log_level = :debug + config.action_dispatch.show_exceptions = false secrets[:secret_key_base] = 'test' secrets[:telegram] = { bot: 'default_token', @@ -34,6 +36,18 @@ Rails.application.initialize! Object.const_set("#{bot_name}_bot_controller".camelize, controller) end +[DefaultBotController, OtherBotController].each do |klass| + klass.class_eval do + use_session! + + define_method :load_session do |*| + session[:test] + end + end +end + +DefaultBotController.session_store = :memory_store + RSpec.configure do |config| config.include RSpec::Rails::RequestExampleGroup, type: :request