Skip to content
Snippets Groups Projects
Commit 2e8bba1a authored by danielvincent's avatar danielvincent
Browse files

MS DG adding more to exporter and importer

parent 948c5d9b
No related branches found
No related tags found
No related merge requests found
......@@ -23,25 +23,31 @@ module Diaspora
}
xml.aspects {
user.aspects.each do |aspect|
puts aspect.people.inspect
xml.aspect {
xml._id aspect.id
xml.name aspect.name
xml.person_ids {
aspect.people.each do |person|
xml.person_id person.id
aspect.person_ids.each do |id|
xml.person_id id
end
}
xml.post_ids {
aspect.posts.each do |post|
xml.post_id post.id
aspect.post_ids.each do |id|
xml.post_id id
end
}
}
end
}
xml.people {
user.friends.each do |friend|
xml.parent << friend.to_xml
end
}
xml.posts {
user.raw_visible_posts.find_all_by_person_id(user.person.id).each do |post|
#post_doc = post.to_xml
......@@ -50,7 +56,7 @@ module Diaspora
# post_doc << comment.to_xml
#end
xml.post post.to_xml
xml.parent << post.to_xml
end
}
}
......
......@@ -16,8 +16,6 @@ module Diaspora
doc = Nokogiri::XML.parse(xml)
user, person = parse_user(doc)
user
end
......@@ -31,29 +29,27 @@ module Diaspora
end
def parse_aspects(doc)
aspects = []
aspects = []
aspect_doc = doc.xpath('/export/aspects/aspect')
aspect_doc.each do |x|
puts x.to_s
puts; puts
aspect = Aspect.new
aspect.id = x.xpath('//aspect/_id').text
aspect.name = x.xpath('//aspect/name').text
a = Nokogiri::XML.parse(x.to_s)
aspect.post_ids = x.xpath('//aspect/post_ids/post_id').collect(&:text)
aspect = Aspect.new
aspect.id = a.xpath('/aspect/_id').text
aspect.name = a.xpath('/aspect/name').text
aspect.post_ids = a.xpath('/aspect/post_ids/post_id').collect(&:text)
aspect.person_ids = a.xpath('/aspect/person_ids/person_id').collect(&:text)
aspects << aspect
end
aspects
end
def parse_people(doc)
people_doc = doc.xpath('/export/people/person')
people_doc.inject([]) do |people,curr|
people << Person.from_xml(curr.to_s)
end
end
......
......@@ -20,14 +20,24 @@ describe Diaspora::Exporter do
let!(:exported) { Diaspora::Exporter.new(Diaspora::Exporters::XML).execute(user1) }
it 'should include a users posts' do
exported.should include status_message1.to_xml.to_s
exported.should include status_message2.to_xml.to_s
exported.should_not include status_message3.to_xml.to_s
exported.should include status_message1.message
exported.should include status_message2.message
exported.should_not include status_message3.message
end
it 'should include a users private key' do
exported.should include user1.serialized_private_key
end
end
it 'should include post_ids' do
doc = Nokogiri::XML::parse(exported)
doc.xpath('//aspects').to_s.should include status_message1.id.to_s
doc.xpath('//posts').to_s.should include status_message1.id.to_s
end
it 'should include a list of users posts' do
doc = Nokogiri::XML::parse(exported)
posts = doc.xpath('//posts').to_s
posts.should include(status_message1.message)
end
end
......@@ -84,22 +84,21 @@ describe Diaspora::Importer do
# Generate exported XML for user1
exporter = Diaspora::Exporter.new(Diaspora::Exporters::XML)
@xml = exporter.execute(user1)
@old_user = user1
@old_aspects = user1.aspects
# Remove user1 from the server
user1.aspects.each( &:delete )
user1.raw_visible_posts.find_all_by_person_id(user1.person.id).each( &:delete )
user1.delete
@importer = Diaspora::Importer.new(Diaspora::Importers::XML)
@doc = Nokogiri::XML::parse(@xml)
end
it 'should import a user' do
user = @importer.execute(@xml)
user.class.should == User
end
describe '#parse_user' do
......@@ -112,6 +111,7 @@ describe Diaspora::Importer do
end
it 'should set private key' do
@user.serialized_private_key.should_not be nil
@user.serialized_private_key.should == @old_user.serialized_private_key
end
......@@ -125,17 +125,39 @@ describe Diaspora::Importer do
@aspects = @importer.parse_aspects(@doc)
end
it 'should return valid aspects' do
@aspects.all?(&:valid?).should be true
end
it 'should return an array' do
@aspects.count.should == 6
end
it 'should should have post ids' do
puts @aspects.inspect
@aspects.any?{|x| x.post_ids.count > 0}.should be true
end
it 'should have person ids' do
@aspects.any?{|x| x.person_ids.count > 0}.should be true
end
end
describe '#parse_people' do
before do
@people = @importer.parse_people(@doc)
end
it 'should return valid people' do
@people.all?(&:valid?).should be true
end
it 'should return an array' do
@people.count.should == 4
end
end
describe '#parse_posts' do
it 'should have a users personal posts' do
pending
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment