Add tests for RemoteProfile (#5665)
parent
07f7192bc3
commit
2fb722397d
@ -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