Newer
Older
# Copyright (c) 2010, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
require 'spec_helper'
maxwell
a validé
require File.join(Rails.root, 'lib/diaspora/exporter')
describe Diaspora::Exporter do
Michael Sofaer
a validé
before do
@user1 = Factory.create(:user)
@user2 = Factory.create(:user)
@user3 = Factory.create(:user)
Michael Sofaer
a validé
@aspect = @user1.aspects.create(:name => "Old Work")
@aspect1 = @user1.aspects.create(:name => "Work")
@aspect2 = @user2.aspects.create(:name => "Family")
@aspect3 = @user3.aspects.create(:name => "Pivots")
@status_message1 = @user1.post(:status_message, :message => "One", :public => true, :to => @aspect1.id)
@status_message2 = @user1.post(:status_message, :message => "Two", :public => true, :to => @aspect1.id)
@status_message3 = @user2.post(:status_message, :message => "Three", :public => false, :to => @aspect2.id)
@user1.reload
@user2.reload
end
Michael Sofaer
a validé
def exported
Nokogiri::XML(Diaspora::Exporter.new(Diaspora::Exporters::XML).execute(@user1))
end
Michael Sofaer
a validé
before do
@user_xml = exported.xpath('//user').to_s
end
Michael Sofaer
a validé
@user_xml.to_s.should include @user1.serialized_private_key
Michael Sofaer
a validé
aspects_xml = exported.xpath('//aspects').to_s
aspects_xml.should include @status_message1.id.to_s
aspects_xml.should include @status_message2.id.to_s
Michael Sofaer
a validé
connect_users(@user1, @aspect1, @user3, @aspect3)
Raphael
a validé
@user1.add_contact_to_aspect(@user1.contact_for(@user3.person), @aspect)
Michael Sofaer
a validé
@user1.reload
let(:contacts_xml) {exported.xpath('//contacts').to_s}
it 'includes a person id' do
contacts_xml.should include @user3.person.guid
end
it 'should include an aspects names of all aspects they are in' do
#contact specific xml needs to be tested
Michael Sofaer
a validé
@user1.contacts.find_by_person_id(@user3.person.id).aspects.count.should > 0
@user1.contacts.find_by_person_id(@user3.person.id).aspects.each { |aspect|
context '<people/>' do
let(:people_xml) {exported.xpath('//people').to_s}
before do
Michael Sofaer
a validé
connect_users(@user1, @aspect1, @user3, @aspect3)
@user1.reload
Michael Sofaer
a validé
people_xml.should include @user3.person.profile.first_name
people_xml.should include @user3.person.profile.last_name
Michael Sofaer
a validé
Michael Sofaer
a validé
people_xml.should include @user3.person.exported_key
end
it 'should include their diaspora handle' do
Michael Sofaer
a validé
people_xml.should include @user3.person.diaspora_handle
context '<posts>' do
let(:posts_xml) {exported.xpath('//posts').to_s}
it 'should include many posts xml' do
Michael Sofaer
a validé
posts_xml.should include @status_message1.message
posts_xml.should include @status_message2.message
posts_xml.should_not include @status_message3.message
Michael Sofaer
a validé
it 'should include post created at time' do
doc = Nokogiri::XML::parse(posts_xml)
xml_time = Time.zone.parse(doc.xpath('//posts/status_message/created_at').first.text)
xml_time.to_i.should == @status_message1.created_at.to_i