retrospring/spec/models/reaction_spec.rb
2023-10-28 02:44:48 +02:00

61 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
describe Reaction do
let(:user) { FactoryBot.create(:user) }
let(:owner) { FactoryBot.create(:user) }
let(:parent) { FactoryBot.create(:answer, user: owner) }
before do
subject.content = "🙂"
subject.parent = parent
subject.user = user
end
describe "associations" do
it { should belong_to(:user) }
it { should belong_to(:parent) }
end
describe "after_create" do
context "owner is subscribed to the parent" do
before do
Subscription.subscribe(owner, parent)
end
it "should notify the parent's author" do
expect { subject.save }.to change { owner.notifications.count }.by(1)
end
end
it "should increment the user's smiled count" do
expect { subject.save }.to change { user.smiled_count }.by(1)
end
it "should increment the parent's smiled count" do
expect { subject.save }.to change { parent.smile_count }.by(1)
end
end
describe "before_destroy" do
context "owner has a notification for this reaction" do
before do
subject.save
Notification.notify(owner, subject)
end
it "should denotify the parent's author" do
expect { subject.destroy }.to change { owner.notifications.count }.by(-1)
end
end
it "should reduce the user's smiled count" do
expect { subject.destroy }.to change { user.smiled_count }.by(-1)
end
it "should reduce the parent's smiled count" do
expect { subject.destroy }.to change { parent.smile_count }.by(-1)
end
end
end