Files
postter/spec/models/user_spec.rb
2022-02-28 13:50:22 -03:00

82 lines
2.1 KiB
Ruby

require 'rails_helper'
RSpec.describe User, type: :model do
describe 'validations' do
describe 'username' do
it 'presence' do
user = build(:user, username: nil)
expect(user).to_not be_valid
end
it 'uniqueness' do
create(:user, username: 'xpto')
user = build(:user, username: 'xpto')
expect(user).to_not be_valid
end
it 'max length 14' do
with_15_caracters = build(:user, username: 'asdfghjklzxcvhn')
with_14_caracters = build(:user, username: 'asdfghjklzxcvh')
expect(with_15_caracters).to_not be_valid
expect(with_14_caracters).to be_valid
end
it 'format' do
with_invalid_format = build(:user, username: 'asdfghjklzxcvh!')
with_valid_format = build(:user, username: 'asdfghjklzxcvh')
expect(with_invalid_format).to_not be_valid
expect(with_valid_format).to be_valid
end
end
end
context '#relations' do
context 'following' do
it do
user1 = create(:user)
user2 = create(:user)
user3 = create(:user)
create(:user_follow, follower_id: user1.id, followed_id: user2.id)
create(:user_follow, follower_id: user3.id, followed_id: user1.id)
expect(user1.following).to eq([user2])
end
end
context 'followers' do
it do
user1 = create(:user)
user2 = create(:user)
user3 = create(:user)
create(:user_follow, follower_id: user1.id, followed_id: user2.id)
create(:user_follow, follower_id: user3.id, followed_id: user1.id)
expect(user1.followers).to eq([user3])
end
end
end
describe '#is_following?' do
it do
following_user = create(:user)
now_following_user = create(:user)
followed_user = create(:user)
create(:user_follow, follower_id: following_user.id, followed_id: followed_user.id)
expect(
following_user.is_following?(followed_user)
).to be_truthy
expect(
now_following_user.is_following?(followed_user)
).to be_falsey
end
end
end