diff --git a/lib/diaspora_federation/entities.rb b/lib/diaspora_federation/entities.rb
index c053164..1b6c09c 100644
--- a/lib/diaspora_federation/entities.rb
+++ b/lib/diaspora_federation/entities.rb
@@ -8,6 +8,7 @@ module DiasporaFederation
end
end
+require "diaspora_federation/entities/relayable"
require "diaspora_federation/entities/profile"
require "diaspora_federation/entities/person"
require "diaspora_federation/entities/location"
diff --git a/lib/diaspora_federation/entities/comment.rb b/lib/diaspora_federation/entities/comment.rb
index 543930e..86496a8 100644
--- a/lib/diaspora_federation/entities/comment.rb
+++ b/lib/diaspora_federation/entities/comment.rb
@@ -2,9 +2,7 @@ module DiasporaFederation
module Entities
class Comment < Entity
property :guid
- property :parent_guid
- property :parent_author_signature
- property :author_signature
+ include Relayable
property :text
property :diaspora_id, xml_name: :diaspora_handle
end
diff --git a/lib/diaspora_federation/entities/like.rb b/lib/diaspora_federation/entities/like.rb
index 5d76188..c14ba8e 100644
--- a/lib/diaspora_federation/entities/like.rb
+++ b/lib/diaspora_federation/entities/like.rb
@@ -4,9 +4,7 @@ module DiasporaFederation
property :positive
property :guid
property :target_type
- property :parent_guid
- property :parent_author_signature
- property :author_signature
+ include Relayable
property :diaspora_id, xml_name: :diaspora_handle
end
end
diff --git a/lib/diaspora_federation/entities/message.rb b/lib/diaspora_federation/entities/message.rb
index 5eadac7..d1ef159 100644
--- a/lib/diaspora_federation/entities/message.rb
+++ b/lib/diaspora_federation/entities/message.rb
@@ -2,9 +2,7 @@ module DiasporaFederation
module Entities
class Message < Entity
property :guid
- property :parent_guid
- property :parent_author_signature
- property :author_signature
+ include Relayable
property :text
property :created_at, default: -> { Time.now.utc }
property :diaspora_id, xml_name: :diaspora_handle
diff --git a/lib/diaspora_federation/entities/participation.rb b/lib/diaspora_federation/entities/participation.rb
index a7f99ce..8e8dd5f 100644
--- a/lib/diaspora_federation/entities/participation.rb
+++ b/lib/diaspora_federation/entities/participation.rb
@@ -3,9 +3,7 @@ module DiasporaFederation
class Participation < Entity
property :guid
property :target_type
- property :parent_guid
- property :parent_author_signature
- property :author_signature
+ include Relayable
property :diaspora_id, xml_name: :diaspora_handle
end
end
diff --git a/lib/diaspora_federation/entities/poll_participation.rb b/lib/diaspora_federation/entities/poll_participation.rb
index 8d671ab..d1b11c8 100644
--- a/lib/diaspora_federation/entities/poll_participation.rb
+++ b/lib/diaspora_federation/entities/poll_participation.rb
@@ -2,8 +2,7 @@ module DiasporaFederation
module Entities
class PollParticipation < Entity
property :guid
- property :parent_guid
- property :parent_author_signature
+ include Relayable
property :diaspora_id, xml_name: :diaspora_handle
property :poll_answer_guid
end
diff --git a/lib/diaspora_federation/entities/relayable.rb b/lib/diaspora_federation/entities/relayable.rb
new file mode 100644
index 0000000..3144b9a
--- /dev/null
+++ b/lib/diaspora_federation/entities/relayable.rb
@@ -0,0 +1,13 @@
+module DiasporaFederation
+ module Entities
+ module Relayable
+ def self.included(model)
+ model.class_eval do
+ property :parent_guid
+ property :parent_author_signature
+ property :author_signature
+ end
+ end
+ end
+ end
+end
diff --git a/spec/factories.rb b/spec/factories.rb
index d20ada5..b80e37e 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -93,15 +93,18 @@ FactoryGirl.define do
width 800
end
- factory :participation_entity, class: DiasporaFederation::Entities::Participation do
- guid
- target_type "StatusMessage"
+ factory :relayable_entity, class: DiasporaFederation::Entities::Relayable do
parent_guid { generate(:guid) }
- diaspora_id
parent_author_signature { generate(:signature) }
author_signature { generate(:signature) }
end
+ factory :participation_entity, class: DiasporaFederation::Entities::Participation, parent: :relayable_entity do
+ guid
+ target_type "StatusMessage"
+ diaspora_id
+ end
+
factory :status_message_entity, class: DiasporaFederation::Entities::StatusMessage do
raw_message "i am a very interesting status update"
guid
@@ -115,22 +118,16 @@ FactoryGirl.define do
recipient_id { generate(:diaspora_id) }
end
- factory :comment_entity, class: DiasporaFederation::Entities::Comment do
+ factory :comment_entity, class: DiasporaFederation::Entities::Comment, parent: :relayable_entity do
guid
- parent_guid { generate(:guid) }
- parent_author_signature { generate(:signature) }
- author_signature { generate(:signature) }
text "this is a very informative comment"
diaspora_id
end
- factory :like_entity, class: DiasporaFederation::Entities::Like do
+ factory :like_entity, class: DiasporaFederation::Entities::Like, parent: :relayable_entity do
positive 1
guid
target_type "StatusMessage"
- parent_guid { generate(:guid) }
- parent_author_signature { generate(:signature) }
- author_signature { generate(:signature) }
diaspora_id
end
@@ -147,11 +144,8 @@ FactoryGirl.define do
participant_ids { 3.times.map { generate(:diaspora_id) }.join(";") }
end
- factory :message_entity, class: DiasporaFederation::Entities::Message do
+ factory :message_entity, class: DiasporaFederation::Entities::Message, parent: :relayable_entity do
guid
- parent_guid { generate(:guid) }
- parent_author_signature { generate(:signature) }
- author_signature { generate(:signature) }
text "this is a very informative text"
created_at { DateTime.now.utc }
diaspora_id
@@ -200,11 +194,11 @@ FactoryGirl.define do
poll_answers { 3.times.map { FactoryGirl.build(:poll_answer_entity) } }
end
- factory :poll_participation_entity, class: DiasporaFederation::Entities::PollParticipation do
+ factory :poll_participation_entity,
+ class: DiasporaFederation::Entities::PollParticipation,
+ parent: :relayable_entity do
guid
- parent_guid { generate(:guid) }
diaspora_id
- parent_author_signature { generate(:signature) }
poll_answer_guid { generate(:guid) }
end
end
diff --git a/spec/lib/diaspora_federation/entities/conversation_spec.rb b/spec/lib/diaspora_federation/entities/conversation_spec.rb
index 585971f..487baea 100644
--- a/spec/lib/diaspora_federation/entities/conversation_spec.rb
+++ b/spec/lib/diaspora_federation/entities/conversation_spec.rb
@@ -15,26 +15,7 @@ module DiasporaFederation
#{data[:guid]}
#{data[:subject]}
#{data[:created_at]}
-
- #{msg1.guid}
- #{msg1.parent_guid}
- #{msg1.parent_author_signature}
- #{msg1.author_signature}
- #{msg1.text}
- #{msg1.created_at}
- #{msg1.diaspora_id}
- #{msg1.conversation_guid}
-
-
- #{msg2.guid}
- #{msg2.parent_guid}
- #{msg2.parent_author_signature}
- #{msg2.author_signature}
- #{msg2.text}
- #{msg2.created_at}
- #{msg2.diaspora_id}
- #{msg2.conversation_guid}
-
+#{data[:messages].map {|a| a.to_xml.to_s.indent(2) }.join("\n")}
#{data[:diaspora_id]}
#{data[:participant_ids]}
diff --git a/spec/lib/diaspora_federation/entities/poll_participation_spec.rb b/spec/lib/diaspora_federation/entities/poll_participation_spec.rb
index ac6dda7..e711293 100644
--- a/spec/lib/diaspora_federation/entities/poll_participation_spec.rb
+++ b/spec/lib/diaspora_federation/entities/poll_participation_spec.rb
@@ -8,6 +8,7 @@ module DiasporaFederation
#{data[:guid]}
#{data[:parent_guid]}
#{data[:parent_author_signature]}
+ #{data[:author_signature]}
#{data[:diaspora_id]}
#{data[:poll_answer_guid]}