闭社主体 forked from https://github.com/tootsuite/mastodon
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.9 KiB

  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. describe AfterRemoteFollowWorker do
  4. subject { described_class.new }
  5. let(:follow) { Fabricate(:follow) }
  6. describe 'perform' do
  7. context 'when the follow does not exist' do
  8. it 'catches a raise and returns true' do
  9. allow(FollowService).to receive(:new)
  10. result = subject.perform('aaa')
  11. expect(result).to eq(true)
  12. expect(FollowService).not_to have_received(:new)
  13. end
  14. end
  15. context 'when the account cannot be updated' do
  16. it 'returns nil and does not call service when account is nil' do
  17. allow(FollowService).to receive(:new)
  18. service = double(call: nil)
  19. allow(FetchRemoteAccountService).to receive(:new).and_return(service)
  20. result = subject.perform(follow.id)
  21. expect(result).to be_nil
  22. expect(FollowService).not_to have_received(:new)
  23. end
  24. it 'returns nil and does not call service when account is not locked' do
  25. allow(FollowService).to receive(:new)
  26. service = double(call: double(locked?: false))
  27. allow(FetchRemoteAccountService).to receive(:new).and_return(service)
  28. result = subject.perform(follow.id)
  29. expect(result).to be_nil
  30. expect(FollowService).not_to have_received(:new)
  31. end
  32. end
  33. context 'when the account is updated' do
  34. it 'calls the follow service and destroys the follow' do
  35. follow_service = double(call: nil)
  36. allow(FollowService).to receive(:new).and_return(follow_service)
  37. account = Fabricate(:account, locked: true)
  38. service = double(call: account)
  39. allow(FetchRemoteAccountService).to receive(:new).and_return(service)
  40. result = subject.perform(follow.id)
  41. expect(result).to be_nil
  42. expect(follow_service).to have_received(:call).with(follow.account, account.acct)
  43. expect { follow.reload }.to raise_error(ActiveRecord::RecordNotFound)
  44. end
  45. end
  46. end
  47. end