Files
postter/spec/models/post_spec.rb
João Victor Geonizeli 7ea2d65fef improve relations and scopes
2022-02-28 10:33:44 -03:00

83 lines
2.0 KiB
Ruby

require 'rails_helper'
RSpec.describe Post, type: :model do
describe 'scopes' do
context '#by_user_follows' do
it 'returns only posts from user follows ' do
followed_user = create(:user)
not_followed_user = create(:user)
post1 = create(:post, user: followed_user)
post2 = create(:post, user: followed_user)
create(:post, user: not_followed_user)
following_user = create(:user)
create(
:user_follow,
follower_id: following_user.id,
followed_id: followed_user.id
)
expect(Post.by_user_follows(following_user)).to eq([
post1,
post2
])
end
end
end
describe '#kind' do
context 'when post have other post reference and a content' do
it 'returns :quoted_post' do
quoted_post = create(:post)
post = build(:post, quoted_post: quoted_post)
expect(post.kind).to eq(:quoted_post)
end
end
context 'when post have other post reference and dont have a content' do
it 'returns :repost' do
quoted_post = create(:post)
post = build(:post, quoted_post: quoted_post, content: nil)
expect(post.kind).to eq(:repost)
end
end
context 'when post dont have other post reference and have a content' do
it 'returns :post' do
post = build(:post)
expect(post.kind).to eq(:post)
end
end
end
describe '#limit_of_post_per_day' do
context 'when user tries to post more than 5 times in a day' do
it 'returns error' do
user = create(:user)
5.times do
create(:post, user: user)
end
expect(build(:post, user: user).valid?).to be_falsey
end
end
context 'when the user has not yet reached their publication limit' do
it 'does not returns error' do
user = create(:user)
4.times do
create(:post, user: user)
end
expect(build(:post, user: user).valid?).to be_truthy
end
end
end
end