write spec for Diaspora::Federation::Entities to replace xml specs
This commit is contained in:
parent
7893a23927
commit
d2219aa58f
2 changed files with 314 additions and 1 deletions
|
|
@ -21,6 +21,7 @@ FactoryGirl.define do
|
|||
gender "robot"
|
||||
location "Earth"
|
||||
birthday Date.today
|
||||
tag_string "#one #two"
|
||||
association :person
|
||||
end
|
||||
|
||||
|
|
@ -177,6 +178,8 @@ FactoryGirl.define do
|
|||
factory(:photo) do
|
||||
sequence(:random_string) {|n| SecureRandom.hex(10) }
|
||||
association :author, :factory => :person
|
||||
height 42
|
||||
width 23
|
||||
after(:build) do |p|
|
||||
p.unprocessed_image.store! File.open(File.join(File.dirname(__FILE__), 'fixtures', 'button.png'))
|
||||
p.update_remote_path
|
||||
|
|
@ -290,7 +293,7 @@ FactoryGirl.define do
|
|||
end
|
||||
|
||||
factory(:conversation_with_message, parent: :conversation) do
|
||||
after(:build) do |c|
|
||||
after(:create) do |c|
|
||||
msg = FactoryGirl.build(:message)
|
||||
msg.conversation_id = c.id
|
||||
c.participants << msg.author
|
||||
|
|
|
|||
310
spec/lib/diaspora/federation/entities_spec.rb
Normal file
310
spec/lib/diaspora/federation/entities_spec.rb
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
require "spec_helper"
|
||||
|
||||
describe Diaspora::Federation::Entities do
|
||||
describe ".build" do
|
||||
it "builds an account deletion" do
|
||||
diaspora_entity = FactoryGirl.build(:account_deletion)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::AccountDeletion)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.person.diaspora_handle)
|
||||
end
|
||||
|
||||
it "builds a comment" do
|
||||
diaspora_entity = FactoryGirl.build(:comment)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Comment)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.parent_guid).to eq(diaspora_entity.post.guid)
|
||||
expect(federation_entity.text).to eq(diaspora_entity.text)
|
||||
end
|
||||
|
||||
it "builds a contact (request)" do
|
||||
diaspora_entity = FactoryGirl.build(:contact)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Request)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.user.diaspora_handle)
|
||||
expect(federation_entity.recipient).to eq(diaspora_entity.person.diaspora_handle)
|
||||
end
|
||||
|
||||
context "Conversation" do
|
||||
let(:diaspora_entity) { FactoryGirl.create(:conversation_with_message) }
|
||||
let(:federation_entity) { described_class.build(diaspora_entity) }
|
||||
|
||||
it "builds a conversation" do
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Conversation)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.subject).to eq(diaspora_entity.subject)
|
||||
expect(federation_entity.created_at).to eq(diaspora_entity.created_at)
|
||||
end
|
||||
|
||||
it "adds the participants" do
|
||||
expect(federation_entity.participants)
|
||||
.to eq("#{diaspora_entity.author.diaspora_handle};#{diaspora_entity.messages.first.author.diaspora_handle}")
|
||||
end
|
||||
|
||||
it "includes the message" do
|
||||
diaspora_message = diaspora_entity.messages.first
|
||||
federation_message = federation_entity.messages.first
|
||||
|
||||
expect(federation_message.author).to eq(diaspora_message.author.diaspora_handle)
|
||||
expect(federation_message.guid).to eq(diaspora_message.guid)
|
||||
expect(federation_message.conversation_guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_message.text).to eq(diaspora_message.text)
|
||||
expect(federation_message.created_at).to eq(diaspora_message.created_at)
|
||||
end
|
||||
end
|
||||
|
||||
it "builds a like" do
|
||||
diaspora_entity = FactoryGirl.build(:like)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Like)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.parent_guid).to eq(diaspora_entity.target.guid)
|
||||
expect(federation_entity.positive).to eq(diaspora_entity.positive)
|
||||
end
|
||||
|
||||
it "builds a message" do
|
||||
diaspora_entity = FactoryGirl.create(:message)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Message)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.conversation_guid).to eq(diaspora_entity.conversation.guid)
|
||||
expect(federation_entity.text).to eq(diaspora_entity.text)
|
||||
expect(federation_entity.created_at).to eq(diaspora_entity.created_at)
|
||||
end
|
||||
|
||||
it "builds a participation" do
|
||||
diaspora_entity = FactoryGirl.build(:participation)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Participation)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.parent_guid).to eq(diaspora_entity.target.guid)
|
||||
expect(federation_entity.parent_type).to eq(diaspora_entity.target.class.base_class.to_s)
|
||||
end
|
||||
|
||||
it "builds a photo" do
|
||||
diaspora_entity = FactoryGirl.create(:photo)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Photo)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.public).to eq(diaspora_entity.public)
|
||||
expect(federation_entity.created_at).to eq(diaspora_entity.created_at)
|
||||
expect(federation_entity.remote_photo_path).to eq(diaspora_entity.remote_photo_path)
|
||||
expect(federation_entity.remote_photo_name).to eq(diaspora_entity.remote_photo_name)
|
||||
expect(federation_entity.text).to eq(diaspora_entity.text)
|
||||
expect(federation_entity.height).to eq(diaspora_entity.height)
|
||||
expect(federation_entity.width).to eq(diaspora_entity.width)
|
||||
end
|
||||
|
||||
it "builds a poll participation" do
|
||||
diaspora_entity = FactoryGirl.build(:poll_participation)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::PollParticipation)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.parent_guid).to eq(diaspora_entity.poll_answer.poll.guid)
|
||||
expect(federation_entity.poll_answer_guid).to eq(diaspora_entity.poll_answer.guid)
|
||||
end
|
||||
|
||||
it "builds a profile" do
|
||||
diaspora_entity = FactoryGirl.build(:profile_with_image_url)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Profile)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.diaspora_handle)
|
||||
expect(federation_entity.first_name).to eq(diaspora_entity.first_name)
|
||||
expect(federation_entity.last_name).to eq(diaspora_entity.last_name)
|
||||
expect(federation_entity.image_url).to eq(diaspora_entity.image_url)
|
||||
expect(federation_entity.image_url_medium).to eq(diaspora_entity.image_url_medium)
|
||||
expect(federation_entity.image_url_small).to eq(diaspora_entity.image_url_small)
|
||||
expect(federation_entity.birthday).to eq(diaspora_entity.birthday)
|
||||
expect(federation_entity.gender).to eq(diaspora_entity.gender)
|
||||
expect(federation_entity.bio).to eq(diaspora_entity.bio)
|
||||
expect(federation_entity.location).to eq(diaspora_entity.location)
|
||||
expect(federation_entity.searchable).to eq(diaspora_entity.searchable)
|
||||
expect(federation_entity.nsfw).to eq(diaspora_entity.nsfw)
|
||||
expect(federation_entity.tag_string).to eq(diaspora_entity.tag_string)
|
||||
end
|
||||
|
||||
it "builds a reshare" do
|
||||
diaspora_entity = FactoryGirl.create(:reshare)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::Reshare)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.root_author).to eq(diaspora_entity.root.author.diaspora_handle)
|
||||
expect(federation_entity.root_guid).to eq(diaspora_entity.root.guid)
|
||||
expect(federation_entity.public).to be_truthy
|
||||
expect(federation_entity.created_at).to eq(diaspora_entity.created_at)
|
||||
expect(federation_entity.provider_display_name).to eq(diaspora_entity.provider_display_name)
|
||||
end
|
||||
|
||||
context "StatusMessage" do
|
||||
it "builds a status message" do
|
||||
diaspora_entity = FactoryGirl.create(:status_message)
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
|
||||
expect(federation_entity).to be_instance_of(DiasporaFederation::Entities::StatusMessage)
|
||||
expect(federation_entity.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_entity.guid).to eq(diaspora_entity.guid)
|
||||
expect(federation_entity.raw_message).to eq(diaspora_entity.text)
|
||||
expect(federation_entity.public).to eq(diaspora_entity.public)
|
||||
expect(federation_entity.created_at).to eq(diaspora_entity.created_at)
|
||||
expect(federation_entity.provider_display_name).to eq(diaspora_entity.provider_display_name)
|
||||
|
||||
expect(federation_entity.photos).to be_empty
|
||||
expect(federation_entity.location).to be_nil
|
||||
expect(federation_entity.poll).to be_nil
|
||||
end
|
||||
|
||||
it "includes the photos" do
|
||||
diaspora_entity = FactoryGirl.create(:status_message_with_photo)
|
||||
diaspora_photo = diaspora_entity.photos.first
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
federation_photo = federation_entity.photos.first
|
||||
|
||||
expect(federation_entity.photos.size).to eq(1)
|
||||
expect(federation_photo.author).to eq(diaspora_entity.author.diaspora_handle)
|
||||
expect(federation_photo.guid).to eq(diaspora_photo.guid)
|
||||
expect(federation_photo.public).to eq(diaspora_photo.public)
|
||||
expect(federation_photo.created_at).to eq(diaspora_photo.created_at)
|
||||
expect(federation_photo.remote_photo_path).to eq(diaspora_photo.remote_photo_path)
|
||||
expect(federation_photo.remote_photo_name).to eq(diaspora_photo.remote_photo_name)
|
||||
expect(federation_photo.text).to eq(diaspora_photo.text)
|
||||
expect(federation_photo.height).to eq(diaspora_photo.height)
|
||||
expect(federation_photo.width).to eq(diaspora_photo.width)
|
||||
end
|
||||
|
||||
it "includes the location" do
|
||||
diaspora_entity = FactoryGirl.create(:status_message_with_location)
|
||||
diaspora_location = diaspora_entity.location
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
federation_location = federation_entity.location
|
||||
|
||||
expect(federation_location.address).to eq(diaspora_location.address)
|
||||
expect(federation_location.lat).to eq(diaspora_location.lat)
|
||||
expect(federation_location.lng).to eq(diaspora_location.lng)
|
||||
end
|
||||
|
||||
it "includes the poll" do
|
||||
diaspora_entity = FactoryGirl.create(:status_message_with_poll)
|
||||
diaspora_poll = diaspora_entity.poll
|
||||
federation_entity = described_class.build(diaspora_entity)
|
||||
federation_poll = federation_entity.poll
|
||||
|
||||
expect(federation_poll.guid).to eq(diaspora_poll.guid)
|
||||
expect(federation_poll.question).to eq(diaspora_poll.question)
|
||||
|
||||
diaspora_answer1 = diaspora_poll.poll_answers.first
|
||||
diaspora_answer2 = diaspora_poll.poll_answers.second
|
||||
federation_answer1 = federation_poll.poll_answers.first
|
||||
federation_answer2 = federation_poll.poll_answers.second
|
||||
|
||||
expect(federation_answer1.guid).to eq(diaspora_answer1.guid)
|
||||
expect(federation_answer1.answer).to eq(diaspora_answer1.answer)
|
||||
expect(federation_answer2.guid).to eq(diaspora_answer2.guid)
|
||||
expect(federation_answer2.answer).to eq(diaspora_answer2.answer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe ".build_retraction" do
|
||||
context "Retraction" do
|
||||
it "builds a Retraction for a Photo" do
|
||||
target = FactoryGirl.create(:photo, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::Retraction)
|
||||
expect(federation_retraction.author).to eq(target.author.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("Photo")
|
||||
end
|
||||
|
||||
it "builds a Retraction for a Contact" do
|
||||
target = FactoryGirl.create(:contact)
|
||||
retraction = Retraction.for(target, target.user)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::Retraction)
|
||||
expect(federation_retraction.author).to eq(target.user.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.user.guid)
|
||||
expect(federation_retraction.target_type).to eq("Person")
|
||||
end
|
||||
end
|
||||
|
||||
context "SignedRetraction" do
|
||||
it "builds a SignedRetraction for a StatusMessage" do
|
||||
target = FactoryGirl.create(:status_message, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::SignedRetraction)
|
||||
expect(federation_retraction.author).to eq(target.author.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("Post")
|
||||
end
|
||||
|
||||
it "builds a SignedRetraction for a Reshare" do
|
||||
target = FactoryGirl.create(:reshare, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::SignedRetraction)
|
||||
expect(federation_retraction.author).to eq(target.author.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("Post")
|
||||
end
|
||||
end
|
||||
|
||||
context "RelayableRetraction" do
|
||||
it "builds a RelayableRetraction for a Comment" do
|
||||
target = FactoryGirl.create(:comment, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::RelayableRetraction)
|
||||
expect(federation_retraction.author).to eq(alice.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("Comment")
|
||||
end
|
||||
|
||||
it "builds a RelayableRetraction for a Like" do
|
||||
target = FactoryGirl.create(:like, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::RelayableRetraction)
|
||||
expect(federation_retraction.author).to eq(alice.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("Like")
|
||||
end
|
||||
|
||||
it "builds a RelayableRetraction for a PollParticipation" do
|
||||
target = FactoryGirl.create(:poll_participation, author: alice.person)
|
||||
retraction = Retraction.for(target, alice)
|
||||
federation_retraction = described_class.build_retraction(retraction)
|
||||
|
||||
expect(federation_retraction).to be_instance_of(DiasporaFederation::Entities::RelayableRetraction)
|
||||
expect(federation_retraction.author).to eq(alice.diaspora_handle)
|
||||
expect(federation_retraction.target_guid).to eq(target.guid)
|
||||
expect(federation_retraction.target_type).to eq("PollParticipation")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue