2016-03-19 07:13:47 -04:00
require 'rails_helper'
RSpec . describe UpdateRemoteProfileService do
2016-03-22 16:05:23 -04:00
let ( :xml ) { Nokogiri :: XML ( File . read ( File . join ( Rails . root , 'spec' , 'fixtures' , 'push' , 'feed.atom' ) ) ) . at_xpath ( '//xmlns:author' ) }
2016-03-19 07:13:47 -04:00
subject { UpdateRemoteProfileService . new }
2016-03-22 16:05:23 -04:00
before do
stub_request ( :get , 'https://quitter.no/avatar/7477-300-20160211190340.png' ) . to_return ( request_fixture ( 'avatar.txt' ) )
end
context 'with updated details' do
let ( :remote_account ) { Fabricate ( :account , username : 'bob' , domain : 'example.com' ) }
before do
subject . ( xml , remote_account )
end
it 'downloads new avatar' do
expect ( a_request ( :get , 'https://quitter.no/avatar/7477-300-20160211190340.png' ) ) . to have_been_made
end
it 'sets the avatar remote url' do
expect ( remote_account . reload . avatar_remote_url ) . to eq 'https://quitter.no/avatar/7477-300-20160211190340.png'
end
it 'sets display name' do
expect ( remote_account . reload . display_name ) . to eq 'D I G I T A L C A T '
end
it 'sets note' do
expect ( remote_account . reload . note ) . to eq 'Software engineer, free time musician and D I G I T A L S P O R T S enthusiast. Likes cats. Warning: May contain memes'
end
end
context 'with unchanged details' do
let ( :remote_account ) { Fabricate ( :account , username : 'bob' , domain : 'example.com' , display_name : 'D I G I T A L C A T ' , note : 'Software engineer, free time musician and D I G I T A L S P O R T S enthusiast. Likes cats. Warning: May contain memes' , avatar_remote_url : 'https://quitter.no/avatar/7477-300-20160211190340.png' ) }
before do
subject . ( xml , remote_account )
end
it 'does not re-download avatar' do
expect ( a_request ( :get , 'https://quitter.no/avatar/7477-300-20160211190340.png' ) ) . to have_been_made . once
end
it 'sets the avatar remote url' do
expect ( remote_account . reload . avatar_remote_url ) . to eq 'https://quitter.no/avatar/7477-300-20160211190340.png'
end
it 'sets display name' do
expect ( remote_account . reload . display_name ) . to eq 'D I G I T A L C A T '
end
it 'sets note' do
expect ( remote_account . reload . note ) . to eq 'Software engineer, free time musician and D I G I T A L S P O R T S enthusiast. Likes cats. Warning: May contain memes'
end
end
2016-03-19 07:13:47 -04:00
end