|
|
- # 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
|