Ruby と Rails は初めてで、テストを正しい方法で実装しようとしています。私は現在、ユーザーのサインアップに取り組んでいます。最初のユーザーが管理者としてサインアップし、その後のすべてのユーザーが通常のユーザーになることを望みます。
現在、テストを機能として作成する必要があると考えていますが、これが実際にモデル テストであるべきかどうか疑問に思っています。
私の現在のコードはここにあります
require 'spec_helper'
describe "User pages" do
subject { page }
describe "Sign up page" do
before { visit signup_path }
it { should have_button('Create!') }
end
describe "Creating an account" do
before { visit signup_path }
let(:submit) { "Create!" }
describe "with invalid information" do
it "should not create the user account" do
expect { click_button "Create!"}.not_to change(User, :count)
end
describe "it should display errors" do
before { click_button submit }
it { should have_content('Failed signup') }
end
end
describe "with valid information" do
before do
fill_in "Name", with: "Example User"
fill_in "Email", with: "user@example.com"
fill_in "Password", with: "password"
fill_in "Confirm Password", with: "password"
end
it "should create the user" do
expect { click_button submit }.to change(User, :count).by(1)
end
# User sign in not implemented at this point
describe "the first user" do
User.all.count.should == 0
click_button submit
User.all.count.should == 1
@firstUser = User.first
@firstUser.is_admin?.should == true
describe "the second user" do
before do
visit signup_path
fill_in "Name", with: "Example User2"
fill_in "Email", with: "user2@example.com"
fill_in "Password", with: "password"
fill_in "Confirm Password", with: "password"
end
click_button submit
@secondUser = User.all.last
@secondUser.is_admin?.should == false
end
end
end
end
終わり
私は主に「有効な情報を含む」部分に関心があり、rspec/capybara に正しく適合するようにそれをクリーンアップしたいと考えています。