Rspec параметри към споделен контекст

Искам да тествам дали потребителят е влязъл във всяко от действията на контролера.

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

Това ще изисква предаване на get :index, get :new и т.н. и предаване на параметъра за показване и редактиране.

Ето версията без DRY само с едно действие:

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