I got feedback from many users, that they don't understand how the "my activity" stream is sorted, because they have posts on the top, but don't see why. The user doesn't see if a like was added, and it is also not imported for the user to see the post again then. And we have notifications if someone likes a users own posts, so no need to move it on top of the "my activity" stream here too. closes #7030
88 lines
3.2 KiB
Ruby
88 lines
3.2 KiB
Ruby
# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
require "spec_helper"
|
|
|
|
shared_examples_for "it is relayable" do
|
|
describe "validations" do
|
|
context "author ignored by parent author" do
|
|
context "the author is on the parent object author's ignore list when object is created" do
|
|
before do
|
|
bob.blocks.create(person: alice.person)
|
|
end
|
|
|
|
it "is invalid" do
|
|
expect(relayable).not_to be_valid
|
|
expect(relayable.errors[:author_id].size).to eq(1)
|
|
end
|
|
|
|
it "works if the object has no parent" do # This can happen if we get a comment for a post that's been deleted
|
|
relayable.parent = nil
|
|
expect { relayable.valid? }.to_not raise_exception
|
|
end
|
|
end
|
|
|
|
context "the author is added to the parent object author's ignore list later" do
|
|
it "is valid" do
|
|
relayable.save!
|
|
bob.blocks.create(person: alice.person)
|
|
expect(relayable).to be_valid
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#subscribers" do
|
|
context "parent is local" do
|
|
it "returns the parents original audience, if author is local" do
|
|
expect(object_on_local_parent.subscribers.map(&:id))
|
|
.to match_array([local_leia.person, remote_raphael].map(&:id))
|
|
end
|
|
|
|
it "returns remote persons of the parents original audience not on same pod as the author, if author is remote" do
|
|
person1 = FactoryGirl.create(:person, pod: remote_raphael.pod)
|
|
person2 = FactoryGirl.create(:person, pod: FactoryGirl.create(:pod))
|
|
local_luke.share_with(person1, local_luke.aspects.first)
|
|
local_luke.share_with(person2, local_luke.aspects.first)
|
|
|
|
expect(remote_object_on_local_parent.subscribers.map(&:id)).to match_array([person2].map(&:id))
|
|
end
|
|
end
|
|
|
|
context "parent is remote" do
|
|
it "returns the author of parent and author of relayable (for local delivery)" do
|
|
expect(object_on_remote_parent.subscribers.map(&:id))
|
|
.to match_array([remote_raphael, local_luke.person].map(&:id))
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#signature" do
|
|
let(:signature_class) { described_class.reflect_on_association(:signature).klass }
|
|
|
|
before do
|
|
remote_object_on_local_parent.signature = signature_class.new(
|
|
author_signature: "signature",
|
|
additional_data: {"new_property" => "some text"},
|
|
signature_order: FactoryGirl.create(:signature_order)
|
|
)
|
|
end
|
|
|
|
it "returns the signature data" do
|
|
signature = described_class.find(remote_object_on_local_parent.id).signature
|
|
expect(signature).not_to be_nil
|
|
expect(signature.author_signature).to eq("signature")
|
|
expect(signature.additional_data).to eq("new_property" => "some text")
|
|
expect(signature.order).to eq(%w(guid parent_guid text author))
|
|
end
|
|
|
|
it "deletes the signature when destroying the relayable" do
|
|
id = remote_object_on_local_parent.id
|
|
remote_object_on_local_parent.destroy!
|
|
|
|
signature = signature_class.find_by(signature_class.primary_key => id)
|
|
expect(signature).to be_nil
|
|
end
|
|
end
|
|
end
|