From fd1f896d170f558d6cb5f7ad4ea2fb4100c42612 Mon Sep 17 00:00:00 2001 From: cmrd Senya Date: Fri, 13 Nov 2015 16:43:36 +0300 Subject: [PATCH] Introduce the "Relayable" entity, which encapsulates common properties of entities that are inherited from Relayable class in the Diaspora source code - "parent_guid", "parent_author_signature", "author_signature". --- lib/diaspora_federation/entities.rb | 1 + lib/diaspora_federation/entities/comment.rb | 4 +-- lib/diaspora_federation/entities/like.rb | 4 +-- lib/diaspora_federation/entities/message.rb | 4 +-- .../entities/participation.rb | 4 +-- .../entities/poll_participation.rb | 3 +- lib/diaspora_federation/entities/relayable.rb | 13 ++++++++ spec/factories.rb | 32 ++++++++----------- .../entities/conversation_spec.rb | 21 +----------- .../entities/poll_participation_spec.rb | 1 + 10 files changed, 34 insertions(+), 53 deletions(-) create mode 100644 lib/diaspora_federation/entities/relayable.rb 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]}