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

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -