diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 50b8f700b..b2b5e076b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -22,27 +22,27 @@ module ApplicationHelper
doc.xpath("/XML/posts/post")
end
- def parse_posts_from_xml(xml)
- posts = []
+ def parse_objects_from_xml(xml)
+ objects = []
sender = parse_sender_object_from_xml(xml)
body = parse_body_contents_from_xml(xml)
body.children.each do |post|
begin
object = post.name.camelize.constantize.from_xml post.to_s
- object.person = sender
- posts << object if object.is_a? Post
+ object.person = sender if object.is_a? Post
+ objects << object
rescue
- puts "Not a real type: #{post.to_s}"
+ puts "Not a real type: #{object.to_s}"
end
end
- posts
+ objects
end
- def store_posts_from_xml(xml)
- posts = parse_posts_from_xml(xml)
+ def kk(xml)
+ objects = parse_objects_from_xml(xml)
- posts.each do |p|
- p.save unless p.person.nil?
+ objects.each do |p|
+ p.save if p.respond_to?(:person) && p.person
end
end
diff --git a/spec/helpers/parser_spec.rb b/spec/helpers/parser_spec.rb
index eae4ce7fd..445553e5f 100644
--- a/spec/helpers/parser_spec.rb
+++ b/spec/helpers/parser_spec.rb
@@ -12,7 +12,7 @@ describe "parser in application helper" do
status_messages = []
10.times { status_messages << Factory.build(:status_message, :person => @user)}
xml = Post.build_xml_for(status_messages)
- store_posts_from_xml(xml)
+ store_objects_from_xml(xml)
StatusMessage.count.should == 0
end
it 'should discard posts where it does not know the type' do
@@ -24,7 +24,7 @@ describe "parser in application helper" do
\n Here is another message\n a@a.com\n a@a.com\n a@a.com\n \n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
"
- store_posts_from_xml(xml)
+ store_objects_from_xml(xml)
Post.count.should == 2
Post.first.person.email.should == Friend.first.email
end
@@ -36,7 +36,7 @@ describe "parser in application helper" do
\n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
"
- store_posts_from_xml(xml)
+ store_objects_from_xml(xml)
Post.count.should == 0
end
@@ -51,7 +51,7 @@ describe "parser in application helper" do
\n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
"
- store_posts_from_xml(xml)
+ store_objects_from_xml(xml)
Post.count.should == 0
end
it 'should discard types which are not of type post' do
@@ -60,12 +60,13 @@ describe "parser in application helper" do
#{Friend.first.email}
-
+
+
\n Here is another message\n a@a.com\n a@a.com\n a@a.com\n
\n HEY DUDE\n a@a.com\n a@a.com\n a@a.com\n
- "
- store_posts_from_xml(xml)
+ "
+ store_objects_from_xml(xml)
Post.count.should == 2
Post.first.person.email.should == Friend.first.email
end
@@ -94,10 +95,25 @@ describe "parser in application helper" do
end
it 'should be able to extract all posts to an array' do
- posts = parse_posts_from_xml(@xml)
+ posts = parse_objects_from_xml(@xml)
posts.is_a?(Array).should be true
posts.count.should == 10
end
+
+ it 'should be able to correctly handle comments' do
+ friend = Factory.create(:friend)
+ post = Factory.create(:status_message)
+ xml = "#{Friend.first.email}
+
+ \n Freedom!\n #{friend.id}\n #{post.id}}\n
+ "
+ objects = parse_objects_from_xml(xml)
+ comment = objects.first
+ comment.text.should == "Freedom!"
+ comment.person.should == friend
+ comment.post.should == post
+
+ end
end