82 lines
2.1 KiB
Ruby
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
|