2017-05-05 08:26:04 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'rails_helper'
|
|
|
|
|
2018-05-02 09:58:48 -07:00
|
|
|
describe ResolveURLService, type: :service do
|
2017-05-05 08:26:04 -07:00
|
|
|
subject { described_class.new }
|
|
|
|
|
|
|
|
describe '#call' do
|
|
|
|
it 'returns nil when there is no atom url' do
|
|
|
|
url = 'http://example.com/missing-atom'
|
|
|
|
service = double
|
|
|
|
allow(FetchAtomService).to receive(:new).and_return service
|
2017-06-06 07:44:48 -07:00
|
|
|
allow(service).to receive(:call).with(url).and_return(nil)
|
2017-05-05 08:26:04 -07:00
|
|
|
|
|
|
|
result = subject.call(url)
|
|
|
|
expect(result).to be_nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'fetches remote accounts for feed types' do
|
|
|
|
url = 'http://example.com/atom-feed'
|
|
|
|
service = double
|
|
|
|
allow(FetchAtomService).to receive(:new).and_return service
|
|
|
|
feed_url = 'http://feed-url'
|
|
|
|
feed_content = '<feed>contents</feed>'
|
2017-10-04 15:21:44 -07:00
|
|
|
allow(service).to receive(:call).with(url).and_return([feed_url, { prefetched_body: feed_content }])
|
2017-05-05 08:26:04 -07:00
|
|
|
|
|
|
|
account_service = double
|
|
|
|
allow(FetchRemoteAccountService).to receive(:new).and_return(account_service)
|
|
|
|
allow(account_service).to receive(:call)
|
|
|
|
|
|
|
|
_result = subject.call(url)
|
|
|
|
|
2017-08-14 05:08:34 -07:00
|
|
|
expect(account_service).to have_received(:call).with(feed_url, feed_content, nil)
|
2017-05-05 08:26:04 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it 'fetches remote statuses for entry types' do
|
|
|
|
url = 'http://example.com/atom-entry'
|
|
|
|
service = double
|
|
|
|
allow(FetchAtomService).to receive(:new).and_return service
|
|
|
|
feed_url = 'http://feed-url'
|
|
|
|
feed_content = '<entry>contents</entry>'
|
2017-10-04 15:21:44 -07:00
|
|
|
allow(service).to receive(:call).with(url).and_return([feed_url, { prefetched_body: feed_content }])
|
2017-05-05 08:26:04 -07:00
|
|
|
|
|
|
|
account_service = double
|
|
|
|
allow(FetchRemoteStatusService).to receive(:new).and_return(account_service)
|
|
|
|
allow(account_service).to receive(:call)
|
|
|
|
|
|
|
|
_result = subject.call(url)
|
|
|
|
|
2017-08-14 05:08:34 -07:00
|
|
|
expect(account_service).to have_received(:call).with(feed_url, feed_content, nil)
|
2017-05-05 08:26:04 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|