Как остановить Rspec от добавления локали к пути маршрута в методе redirect_to внутри метода ожидаемого - PullRequest
0 голосов
/ 21 сентября 2019

Мой тест

it 'is not allowed to open admin/songs/index' do
  get :index
  expect(response).to redirect_to(new_admin_session_path)
end

Сбой, и результат

Ожидается, что ответ будет перенаправлением на http://test.host/admins/sing_in?locale=es, но был перенаправлением на http://test.host/admins/sign_in

Моя проблема в том, что он действительно должен перенаправить на 'http://test.host/admins/sign_in" без locale = es.Вот что происходит в браузере.

По какой-то причине Rspec добавляет локаль в new_admin_session_path, а это не то, что мне нужно.

Мой файл rout.rb -

Rails.application.routes.draw do
  devise for :admins, controllers: {sessions: 'admins/sessions', registrations: 'admins/registrations'}
  namespace :admin do
    resources :songs
  end
  get('admin/home' => 'admin/home#index')
  root to: 'home#index'
  scope "(:locale)", locale /en|es/ do
    get('home' => 'home#index')
    get('songs' => 'songs#index')
  end
end

Мой файл app / controllers / application_controller.rb имеет

around_action :switch_locale
def switch_locale(&action)
  locale = params[:locale] || I18n.default_locale
   I18n.with_locale(locale, &action)
end

def default_url_options
  { locale: I18n.locale }
end

Мой файл config / application.rb имеет

config.i18n.default_locale = :es
config.i18n.available_locales = [:en, :es]

1 Ответ

0 голосов
/ 25 сентября 2019

У меня нет разрешения просто добавить комментарий и ссылку на эту статью, поэтому я использую это пространство.Посмотрите, поможет ли это.http://til.obiefernandez.com/posts/b540850342-using-defaulturloptions-in-rspec-with-rails-5

...