ruby on rails - undefined method `validate_presence_of' for RSpec::ExampleGroups::User::Validations -
i trying pass model specs validation not able them pass. have placed validation rules in model file well
app/model/user.rb
class user < activerecord::base has_many :friendships has_many :friends, :through => :friendships has_many :plans has_many :memberships, class_name: "planmemebership" has_many :notes has_many :replies, class_name: "notereply" has_many :upvotes, class_name: "noteupvote" validates :first_name, presence: true validates :last_name, presence: true validates :email, presence: true validates :facebook_user_id, presence: true, uniqueness: true validates :facebook_user_token, presence: true, uniqueness: true validates :token, presence: true, uniqueness: true validates :birthday, presence: true validates :gender, presence: true def name first_name + " " + last_name end end
specs/models/user_spec.rb
require 'rails_helper' describe user, :type => :model context "valid factory" "has valid factory" expect(factorygirl.build(:user)).to be_valid end end context "validations" { should validate_presence_of :first_name } { should validate_presence_of :last_name } { should validate_presence_of :email } { should validate_presence_of :birthday } { should validate_presence_of :gender } { should validate_presence_of :facebook_user_id } { should validate_presence_of :facebook_user_token } context "uniqueness" before { create(:user) } { should validate_uniqueness_of :facebook_user_id } { should validate_uniqueness_of :facebook_user_token } { should validate_uniqueness_of :token } end end end
spec/factories/users.rb
factorygirl.define sequence(:facebook_id) { |n| "#{n}1004453333331" } sequence(:facebook_user_token) { |n| "#{n}caa" + ("x" * 216) } factory :user first_name "ralph" last_name "robot" email "ralph@thoughtbot.com" facebook_user_id { generate(:facebook_id) } facebook_user_token birthday { date.current } gender "male" token { token.new.generate } end end
test output
token #generate returns 20-byte token user valid factory has valid factory validations example @ ./spec/models/user_spec.rb:13 (failed - 1) example @ ./spec/models/user_spec.rb:14 (failed - 2) example @ ./spec/models/user_spec.rb:15 (failed - 3) example @ ./spec/models/user_spec.rb:16 (failed - 4) example @ ./spec/models/user_spec.rb:17 (failed - 5) example @ ./spec/models/user_spec.rb:18 (failed - 6) example @ ./spec/models/user_spec.rb:19 (failed - 7) uniqueness example @ ./spec/models/user_spec.rb:23 (failed - 8) example @ ./spec/models/user_spec.rb:24 (failed - 9) example @ ./spec/models/user_spec.rb:25 (failed - 10) failures: 1) user validations failure/error: { should validate_presence_of :first_name } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255f7fb88> # ./spec/models/user_spec.rb:13:in `block (3 levels) in <top (required)>' 2) user validations failure/error: { should validate_presence_of :last_name } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255e9fad8> # ./spec/models/user_spec.rb:14:in `block (3 levels) in <top (required)>' 3) user validations failure/error: { should validate_presence_of :email } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255ded568> # ./spec/models/user_spec.rb:15:in `block (3 levels) in <top (required)>' 4) user validations failure/error: { should validate_presence_of :birthday } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255d65398> # ./spec/models/user_spec.rb:16:in `block (3 levels) in <top (required)>' 5) user validations failure/error: { should validate_presence_of :gender } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255cb7888> # ./spec/models/user_spec.rb:17:in `block (3 levels) in <top (required)>' 6) user validations failure/error: { should validate_presence_of :facebook_user_id } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255c356f8> # ./spec/models/user_spec.rb:18:in `block (3 levels) in <top (required)>' 7) user validations failure/error: { should validate_presence_of :facebook_user_token } nomethoderror: undefined method `validate_presence_of' #<rspec::examplegroups::user::validations:0x007fc255b86a40> # ./spec/models/user_spec.rb:19:in `block (3 levels) in <top (required)>' 8) user validations uniqueness failure/error: before { create(:user) } activerecord::recordnotunique: pg::uniqueviolation: error: duplicate key value violates unique constraint "index_users_on_email" detail: key (email)=(ralph@thoughtbot.com) exists. : insert "users" ("first_name", "last_name", "email", "facebook_user_id", "facebook_user_token", "birthday", "gender", "token", "created_at", "updated_at") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" # ./spec/models/user_spec.rb:22:in `block (4 levels) in <top (required)>' 9) user validations uniqueness failure/error: before { create(:user) } activerecord::recordnotunique: pg::uniqueviolation: error: duplicate key value violates unique constraint "index_users_on_email" detail: key (email)=(ralph@thoughtbot.com) exists. : insert "users" ("first_name", "last_name", "email", "facebook_user_id", "facebook_user_token", "birthday", "gender", "token", "created_at", "updated_at") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" # ./spec/models/user_spec.rb:22:in `block (4 levels) in <top (required)>' 10) user validations uniqueness failure/error: before { create(:user) } activerecord::recordnotunique: pg::uniqueviolation: error: duplicate key value violates unique constraint "index_users_on_email" detail: key (email)=(ralph@thoughtbot.com) exists. : insert "users" ("first_name", "last_name", "email", "facebook_user_id", "facebook_user_token", "birthday", "gender", "token", "created_at", "updated_at") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" # ./spec/models/user_spec.rb:22:in `block (4 levels) in <top (required)>' finished in 0.13486 seconds (files took 3.99 seconds load) 12 examples, 10 failures failed examples: rspec ./spec/models/user_spec.rb:13 # user validations rspec ./spec/models/user_spec.rb:14 # user validations rspec ./spec/models/user_spec.rb:15 # user validations rspec ./spec/models/user_spec.rb:16 # user validations rspec ./spec/models/user_spec.rb:17 # user validations rspec ./spec/models/user_spec.rb:18 # user validations rspec ./spec/models/user_spec.rb:19 # user validations rspec ./spec/models/user_spec.rb:23 # user validations uniqueness rspec ./spec/models/user_spec.rb:24 # user validations uniqueness rspec ./spec/models/user_spec.rb:25 # user validations uniqueness
i think need add following spec_helper.rb
require 'shoulda/matchers'
your specs missing shoulda matcher's methods.
here source. can check. people complains similar things. https://github.com/thoughtbot/shoulda-matchers/issues/384
Comments
Post a Comment