diff --git a/spec/services/unfavourite_service_spec.rb b/spec/services/unfavourite_service_spec.rb new file mode 100644 index 000000000..a714cc067 --- /dev/null +++ b/spec/services/unfavourite_service_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe UnfavouriteService do + describe '#call' do + context 'with a favourited status' do + let(:status) { Fabricate(:status, account: account) } + let!(:favourite) { Fabricate(:favourite, status: status) } + + context 'when the status account is local' do + let(:account) { Fabricate(:account, domain: nil) } + + it 'destroys the favourite' do + subject.call(favourite.account, status) + + expect { favourite.reload } + .to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the status account is a remote activitypub account' do + let(:account) { Fabricate(:account, domain: 'host.example', protocol: :activitypub) } + + it 'destroys the favourite and sends a notification' do + subject.call(favourite.account, status) + + expect { favourite.reload } + .to raise_error(ActiveRecord::RecordNotFound) + expect(ActivityPub::DeliveryWorker) + .to have_enqueued_sidekiq_job(anything, favourite.account.id, status.account.inbox_url) + end + end + end + end +end