diaspora/spec/models/service_spec.rb

59 lines
1.8 KiB
Ruby

require 'spec_helper'
describe Service do
before do
@post = alice.post(:status_message, :text => "hello", :to => alice.aspects.first.id)
@service = Services::Facebook.new(:access_token => "yeah", :uid => 1)
alice.services << @service
end
it 'is unique to a user by service type and uid' do
@service.save
second_service = Services::Facebook.new(:access_token => "yeah", :uid => 1)
alice.services << second_service
alice.services.last.save
alice.services.last.should be_invalid
end
it 'by default has no profile photo url' do
expect( described_class.new.profile_photo_url ).to be_nil
end
describe '.titles' do
it "converts passed service titles into service constants" do
expect( described_class.titles( ['twitter'] ) ).to eql ['Services::Twitter']
end
end
describe '.first_from_omniauth' do
let(:omniauth) { { 'provider' => 'facebook', 'uid' => '1', 'credentials' => {}, 'info' => {} } }
it 'first service by provider and uid' do
expect( described_class.first_from_omniauth( omniauth ) ).to eql @service
end
end
describe '.initialize_from_omniauth' do
let(:omniauth) do
{ 'provider' => 'facebook',
'uid' => '2',
'info' => { 'nickname' => 'grimmin' },
'credentials' => { 'token' => 'tokin', 'secret' =>"not_so_much" }
}
end
let(:subject) { described_class.initialize_from_omniauth( omniauth ) }
it 'new service obj of type Services::Facebook' do
expect( subject.type ).to eql "Services::Facebook"
end
it 'new service obj with oauth options populated' do
expect( subject.uid ).to eql "2"
expect( subject.nickname ).to eql "grimmin"
expect( subject.access_token ).to eql "tokin"
expect( subject.access_secret ).to eql "not_so_much"
end
end
end