diff --git a/app/models/user_follow.rb b/app/models/user_follow.rb index 2c53da6..19c13bc 100644 --- a/app/models/user_follow.rb +++ b/app/models/user_follow.rb @@ -1,4 +1,12 @@ class UserFollow < ApplicationRecord belongs_to :follower, class_name: 'User' belongs_to :followed, class_name: 'User' + + validate :followed, :user_cant_follow_himself + + private + + def user_cant_follow_himself + errors.add(:followed, 'can\'t follow himself') if follower_id == followed_id + end end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 039a390..dc8a3a5 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -1,5 +1,8 @@ FactoryBot.define do factory :user do - username { Faker::Internet.username.gsub(/[^0-9a-z ]/i, '') } + username { + Faker::Internet.username[0..14] + .gsub(/[^0-9a-z ]/i, '') + } end end diff --git a/spec/models/user_follow_spec.rb b/spec/models/user_follow_spec.rb new file mode 100644 index 0000000..343bff1 --- /dev/null +++ b/spec/models/user_follow_spec.rb @@ -0,0 +1,14 @@ +require 'rails_helper' + +RSpec.describe UserFollow, type: :model do + describe 'validations' do + context 'and user try to follow her-self' do + it 'raise error' do + user = create(:user) + user_follow = build(:user_follow, follower_id: user.id, followed_id: user.id) + + expect(user_follow).to_not be_valid + end + end + end +end