mirror of
https://github.com/Growstuff/growstuff.git
synced 2025-12-24 01:57:46 -05:00
76 lines
1.9 KiB
Ruby
76 lines
1.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
describe Like do
|
|
let(:member) { FactoryBot.create(:member) }
|
|
let(:post) { FactoryBot.create(:post) }
|
|
let(:photo) { FactoryBot.create(:photo) }
|
|
|
|
context 'existing like' do
|
|
before do
|
|
@like = Like.create(member:, likeable: post)
|
|
end
|
|
|
|
it 'is valid' do
|
|
expect(@like).to be_valid
|
|
end
|
|
|
|
it 'belongs to a member' do
|
|
expect(@like.member).to be_an_instance_of Member
|
|
end
|
|
|
|
it 'belongs to a likeable item' do
|
|
expect(@like).to respond_to :likeable
|
|
end
|
|
end
|
|
|
|
context 'invalid parameters' do
|
|
it 'is invalid without a member' do
|
|
like = Like.new
|
|
like.likeable = post
|
|
expect(like).not_to be_valid
|
|
end
|
|
|
|
it 'is invalid without a likeable item' do
|
|
like = Like.new
|
|
like.member = member
|
|
expect(like).not_to be_valid
|
|
end
|
|
end
|
|
|
|
it 'does not allow duplicate likes by the same member' do
|
|
Like.create(member:, likeable: post)
|
|
second_like = Like.new(member:, likeable: post)
|
|
expect(second_like).not_to be_valid
|
|
end
|
|
|
|
it 'destroys like if post no longer exists' do
|
|
like = Like.create(member:, likeable: post)
|
|
post.destroy
|
|
expect(Like.all).not_to include like
|
|
end
|
|
|
|
it 'destroys like if post no longer exists' do
|
|
like = Like.create(member:, likeable: post)
|
|
post.destroy
|
|
expect(Like.all).not_to include like
|
|
end
|
|
|
|
it 'destroys like if member no longer exists' do
|
|
like = Like.create(member:, likeable: post)
|
|
member.destroy
|
|
expect(Like.all).not_to include like
|
|
end
|
|
|
|
it 'liked_by_members_names' do
|
|
expect(post.liked_by_members_names).to eq []
|
|
Like.create(member:, likeable: post)
|
|
expect(post.liked_by_members_names).to eq [member.login_name]
|
|
|
|
expect(photo.liked_by_members_names).to eq []
|
|
Like.create(member:, likeable: photo)
|
|
expect(photo.liked_by_members_names).to eq [member.login_name]
|
|
end
|
|
end
|