Railsには、ユーザーがコントローラーの特定のアクションの管理者であることを確認して要求するbefore_filterがあります。
ただし、これらのコントローラーのテストを作成する必要があります。
だから、私はこのように見えるものを持っています:
test "should get create" do
assert_difference('Event.count') do
post :create, FactoryGirl.build(:event)
end
assert_not_nil assigns(:event)
assert_response :success
end
user_factory.rb:
FactoryGirl.define do
factory :admin do
email 'aa@example.com'
password 'password'
password_confirmation 'password'
admin true
end
end
ただし、イベントを作成できるようにするには、管理者としてログインする必要があります。これを行う方法についてのアイデアはありますか?admin列は、usersテーブルのtrue/false列です。
編集:最初の試み:
test "should get create" do
admin = Factory(:admin)
login_as(admin)
assert_difference('Event.count') do
post :create, FactoryGirl.build(:event)
end
assert_not_nil assigns(:event)
assert_response :success
end
エラーを生成します:
1) Error:
test_should_get_create(EventsControllerTest):
NameError: uninitialized constant Admin
アップデート:
FactoryGirl.define do
factory :user do
email 'aa@example.com'
password 'password'
password_confirmation 'password'
end
end
と
test "should get create" do
login_as(FactoryGirl.create(:user, admin: true))
assert_difference('Event.count') do
post :create, FactoryGirl.build(:event)
end
assert_not_nil assigns(:event)
assert_response :success
end
エラーが発生しますtest_should_get_create(EventsControllerTest):
NoMethodError: undefined method 'login_as' for #<EventsControllerTest:0x007fb4faec1b28>