Параметры Rspec для общего контекста

Я хочу проверить, вошел ли пользователь в систему в каждом из действий контроллера.

Как лучше всего высушить это, чтобы я мог повторить это для всех своих действий получения, т.е. получить, показать, создать, отредактировать.

Это потребует передачи get:index, get:new и т. д. и передачи параметра для показа и редактирования.

Вот несухая версия с одним действием:

RSpec.shared_context 'when user is not logged in' do

 before do
    sign_out :user 
  end

  it 'GET#index redirects to sign in page' do   
      get :index       
      expect(response).to redirect_to new_user_session_path
  end

Я хочу сделать это для каждого действия контроллера без необходимости копировать/вставлять код.

Надеюсь это понятно! Заранее спасибо!


person mutant_city    schedule 22.04.2015    source источник


Ответы (1)


Я точно не уверен, но я думаю, что это должно работать:

RSpec.shared_examples 'when user is not logged in' do |actions|
  before { sign_out :user }

  actions.each do |action|
    it "GET##{action} redirects to sign in page" do   
      get action
      expect(response).to redirect_to new_user_session_path
    end
  end
end

it_should_behave_like 'when user is not logged in', %i(new index)
person ole    schedule 24.04.2015