mirror of
https://framagit.org/tykayn/mastodon.git
synced 2023-08-25 08:33:12 +02:00
Add tests for RemoteProfile (#5665)
This commit is contained in:
parent
07f7192bc3
commit
2fb722397d
143
spec/models/remote_profile_spec.rb
Normal file
143
spec/models/remote_profile_spec.rb
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe RemoteProfile do
|
||||||
|
let(:remote_profile) { RemoteProfile.new(body) }
|
||||||
|
let(:body) do
|
||||||
|
<<-XML
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
<author>John</author>
|
||||||
|
XML
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '.initialize' do
|
||||||
|
it 'calls Nokogiri::XML.parse' do
|
||||||
|
expect(Nokogiri::XML).to receive(:parse).with(body, nil, 'utf-8')
|
||||||
|
RemoteProfile.new(body)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'sets document' do
|
||||||
|
remote_profile = RemoteProfile.new(body)
|
||||||
|
expect(remote_profile).not_to be nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#root' do
|
||||||
|
let(:document) { remote_profile.document }
|
||||||
|
|
||||||
|
it 'callse document.at_xpath' do
|
||||||
|
expect(document).to receive(:at_xpath).with(
|
||||||
|
'/atom:feed|/atom:entry',
|
||||||
|
atom: OStatus::TagManager::XMLNS
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_profile.root
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#author' do
|
||||||
|
let(:root) { remote_profile.root }
|
||||||
|
|
||||||
|
it 'calls root.at_xpath' do
|
||||||
|
expect(root).to receive(:at_xpath).with(
|
||||||
|
'./atom:author|./dfrn:owner',
|
||||||
|
atom: OStatus::TagManager::XMLNS,
|
||||||
|
dfrn: OStatus::TagManager::DFRN_XMLNS
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_profile.author
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#hub_link' do
|
||||||
|
let(:root) { remote_profile.root }
|
||||||
|
|
||||||
|
it 'calls #link_href_from_xml' do
|
||||||
|
expect(remote_profile).to receive(:link_href_from_xml).with(root, 'hub')
|
||||||
|
remote_profile.hub_link
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#display_name' do
|
||||||
|
let(:author) { remote_profile.author }
|
||||||
|
|
||||||
|
it 'calls author.at_xpath.content' do
|
||||||
|
expect(author).to receive_message_chain(:at_xpath, :content).with(
|
||||||
|
'./poco:displayName',
|
||||||
|
poco: OStatus::TagManager::POCO_XMLNS
|
||||||
|
).with(no_args)
|
||||||
|
|
||||||
|
remote_profile.display_name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#note' do
|
||||||
|
let(:author) { remote_profile.author }
|
||||||
|
|
||||||
|
it 'calls author.at_xpath.content' do
|
||||||
|
expect(author).to receive_message_chain(:at_xpath, :content).with(
|
||||||
|
'./atom:summary|./poco:note',
|
||||||
|
atom: OStatus::TagManager::XMLNS,
|
||||||
|
poco: OStatus::TagManager::POCO_XMLNS
|
||||||
|
).with(no_args)
|
||||||
|
|
||||||
|
remote_profile.note
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#scope' do
|
||||||
|
let(:author) { remote_profile.author }
|
||||||
|
|
||||||
|
it 'calls author.at_xpath.content' do
|
||||||
|
expect(author).to receive_message_chain(:at_xpath, :content).with(
|
||||||
|
'./mastodon:scope',
|
||||||
|
mastodon: OStatus::TagManager::MTDN_XMLNS
|
||||||
|
).with(no_args)
|
||||||
|
|
||||||
|
remote_profile.scope
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#avatar' do
|
||||||
|
let(:author) { remote_profile.author }
|
||||||
|
|
||||||
|
it 'calls #link_href_from_xml' do
|
||||||
|
expect(remote_profile).to receive(:link_href_from_xml).with(author, 'avatar')
|
||||||
|
remote_profile.avatar
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#header' do
|
||||||
|
let(:author) { remote_profile.author }
|
||||||
|
|
||||||
|
it 'calls #link_href_from_xml' do
|
||||||
|
expect(remote_profile).to receive(:link_href_from_xml).with(author, 'header')
|
||||||
|
remote_profile.header
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#locked?' do
|
||||||
|
before do
|
||||||
|
allow(remote_profile).to receive(:scope).and_return(scope)
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { remote_profile.locked? }
|
||||||
|
|
||||||
|
context 'scope is private' do
|
||||||
|
let(:scope) { 'private' }
|
||||||
|
|
||||||
|
it 'returns true' do
|
||||||
|
is_expected.to be true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'scope is not private' do
|
||||||
|
let(:scope) { 'public' }
|
||||||
|
|
||||||
|
it 'returns false' do
|
||||||
|
is_expected.to be false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user