TurnipとCucumberについても近々書こう
Gemfile
source 'https://rubygems.org' gem 'rails', '4.0.0' group :development do gem 'sqlite3' gem 'better_errors' gem 'binding_of_caller' end group :test do gem 'rspec-rails' gem 'spring' gem 'turnip' gem 'guard-rspec' gem 'guard-spring' gem 'growl' gem 'rb-fsevent' gem 'factory_girl_rails' gem 'database_cleaner' end group :production do gem 'thin' gem 'pg' end gem 'sass-rails', '~> 4.0.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 1.2' group :doc do gem 'sdoc', require: false end gem 'bcrypt-ruby', '~> 3.0.0'
Guardfile
guard :rspec, spring: true, turnip: true do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# # Capybara features specs
# watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
app/models/user.rb
spec/models/user_spec.rb
spec/factories/users.rb
.rspec
実行結果
validateの正規表現で^や$が使えなくなってたねー
( ̄(エ) ̄)彡☆
class User < ActiveRecord::Base has_secure_password validates :login_name, uniqueness: true validates_presence_of :login_name, :admin validates_format_of :login_name, with: /\A[a-z][a-z0-9]*[0-9]\Z/ end
spec/models/user_spec.rb
require 'spec_helper'
describe User do
describe '#validate' do
before :all do
@user = FactoryGirl.create(:user)
end
it "正常に保存できる" do
expect(@user.save).to be true
end
context 'login_name' do
it "login_nameは数字のみは不可" do
@user.login_name = "111"
expect(@user.save).to be false
end
it "login_nameは英字のみは不可" do
@user.login_name = "eee"
expect(@user.save).to be false
end
it "login_nameの先頭は必ず英字" do
@user.login_name = "111aaa"
expect(@user.save).to be false
end
it "login_nameは必須" do
@user.login_name = ""
expect(@user.save).to be false
end
it "login_nameは重複不可" do
@user2 = FactoryGirl.build(:user2)
expect(@user2.save).to be false
end
end
after :all do
User.delete_all
end
end
end
spec/factories/users.rb
FactoryGirl.define do
factory :user, class: User do |f|
f.login_name 'murajun1978'
f.password 'murajun1978'
f.password_confirmation { |u| u.password }
f.admin true
end
factory :user2, class: User do |f|
f.login_name 'murajun1978'
f.password 'sss'
f.password_confirmation { |u| u.password }
f.admin true
end
end
.rspec
--color --format d
実行結果
User
#validate
正常に保存できる
login_name
login_nameは数字のみは不可
login_nameの先頭は必ず英字
login_nameは重複不可
login_nameは英字のみは不可
login_nameは必須
Finished in 0.10709 seconds
6 examples, 0 failures
validateの正規表現で^や$が使えなくなってたねー
( ̄(エ) ̄)彡☆
0 件のコメント:
コメントを投稿