1
새로운 콘텐츠를 만드는 사용자를 위해 내 기능 테스트에 문제가 있습니다. 내 컨트롤러에서이 행을 주석 처리하거나 삭제할 때만 전달됩니다. 팩토리처럼 보입니다. 사용자는 새 콘텐츠를 만들 수 없습니다. 나는 별도의 테스트를 사용하여 새로운 단어를 생성 할 수있는 능력이 있는지를 확인하기 위해 공장을 점검했다. 여기서 어떤 문제가있을 수 있습니까?Rspec을 사용하는 동안 Cancancan 보석
authorize! :create, @word, :message => "Musisz się zalogować, aby dodać nowe słówko."
words_controller.rb
def create
authorize! :create, @word, :message => "Musisz się zalogować, aby dodać nowe słówko."
@user = current_user
@word = @user.words.build(word_params)
respond_to do |format|
if @word.save
format.html {
redirect_to new_word_path
flash[:notice] = 'Słówko zostało prawidłowo zapisane. Dodaj następne!'
}
format.json { render :show, status: :created, location: @word }
else
format.html { render :new }
format.json { render json: @word.errors, status: :unprocessable_entity }
end
end
end
user_creates_word_spec.rb
require 'spec_helper'
feature 'User creates word' do
before(:all) do
category = FactoryGirl.create(:category)
10.times { word = FactoryGirl.create(:word) }
sign_in
expect(page).to have_content 'Wyloguj się'
visit game_words_path
click_link('Dodaj słówko')
end
scenario 'with valid input' do
fill_in 'Angielski', with: 'house'
fill_in 'Polski', with: 'dom'
find(:css, ".check_boxes[value='1']").set(true)
click_button 'Zapisz'
expect(page).to have_content 'Słówko zostało prawidłowo zapisane.'
end
end
테스트 사용자 공장 나는이 라인을 변경
it "can create new word" do
user = FactoryGirl.create(:user)
ability = Ability.new(user)
word = Word.new(user: user)
expect { ability.should be_able_to(:create, word)}
end