write specs for :receive_entity and extend factories

This commit is contained in:
Benjamin Neff 2016-05-15 16:22:09 +02:00
parent a7f6c84bf3
commit aa3ec1b93c
2 changed files with 76 additions and 8 deletions

View file

@ -21,6 +21,7 @@ FactoryGirl.define do
gender "robot" gender "robot"
location "Earth" location "Earth"
birthday Date.today birthday Date.today
association :person
end end
factory :profile_with_image_url, :parent => :profile do factory :profile_with_image_url, :parent => :profile do
@ -70,7 +71,6 @@ FactoryGirl.define do
serialized_private_key OpenSSL::PKey::RSA.generate(1024).export serialized_private_key OpenSSL::PKey::RSA.generate(1024).export
after(:build) do |u| after(:build) do |u|
u.person = FactoryGirl.build(:person, u.person = FactoryGirl.build(:person,
profile: FactoryGirl.build(:profile),
pod: nil, pod: nil,
serialized_public_key: u.encryption_key.public_key.export, serialized_public_key: u.encryption_key.public_key.export,
diaspora_handle: "#{u.username}#{User.diaspora_id_host}") diaspora_handle: "#{u.username}#{User.diaspora_id_host}")
@ -149,16 +149,29 @@ FactoryGirl.define do
lng 13.409779 lng 13.409779
end end
factory :participation do
association :author, factory: :person
association :target, factory: :status_message
end
factory(:poll) do factory(:poll) do
sequence(:question) { |n| "What do you think about #{n} ninjas?" } sequence(:question) {|n| "What do you think about #{n} ninjas?" }
association :status_message
after(:build) do |p| after(:build) do |p|
p.poll_answers << FactoryGirl.build(:poll_answer) p.poll_answers << FactoryGirl.build(:poll_answer, poll: p)
p.poll_answers << FactoryGirl.build(:poll_answer) p.poll_answers << FactoryGirl.build(:poll_answer, poll: p)
end end
end end
factory(:poll_answer) do factory(:poll_answer) do
sequence(:answer) { |n| "#{n} questionmarks" } sequence(:answer) {|n| "#{n} questionmarks" }
association :poll
end
factory :poll_participation do
association :author, factory: :person
association :poll_answer
after(:build) {|p| p.poll = p.poll_answer.poll }
end end
factory(:photo) do factory(:photo) do
@ -286,8 +299,10 @@ FactoryGirl.define do
end end
factory(:message) do factory(:message) do
association(:author, factory: :person) association :author, factory: :person
sequence(:text) { |n| "message text ##{n}" } association :conversation
sequence(:text) {|n| "message text ##{n}" }
after(:build) {|m| m.conversation.participants << m.author }
end end
factory(:message_with_conversation, parent: :message) do factory(:message_with_conversation, parent: :message) do

View file

@ -109,7 +109,8 @@ describe "diaspora federation callbacks" do
FactoryGirl.attributes_for( FactoryGirl.attributes_for(
:federation_person_from_webfinger, :federation_person_from_webfinger,
profile: DiasporaFederation::Entities::Profile.new( profile: DiasporaFederation::Entities::Profile.new(
FactoryGirl.attributes_for(:federation_profile_from_hcard_with_image_url)) FactoryGirl.attributes_for(:federation_profile_from_hcard_with_image_url)
)
) )
) )
@ -326,6 +327,58 @@ describe "diaspora federation callbacks" do
end end
end end
describe ":receive_entity" do
it "receives an AccountDeletion" do
account_deletion = FactoryGirl.build(:account_deletion_entity)
expect(Diaspora::Federation::Receive).to receive(:account_deletion).with(account_deletion)
expect(Workers::ReceiveLocal).not_to receive(:perform_async)
DiasporaFederation.callbacks.trigger(:receive_entity, account_deletion, nil)
end
it "receives a Retraction" do
retraction = FactoryGirl.build(:retraction_entity)
expect(Diaspora::Federation::Receive).to receive(:retraction).with(retraction, 42)
expect(Workers::ReceiveLocal).not_to receive(:perform_async)
DiasporaFederation.callbacks.trigger(:receive_entity, retraction, 42)
end
%i(comment contact conversation like message participation photo
poll_participation profile reshare status_message).each do |entity|
it "receives a #{entity}" do
received = FactoryGirl.build("#{entity}_entity")
persisted = FactoryGirl.create(entity)
expect(Diaspora::Federation::Receive).to receive(entity).with(received).and_return(persisted)
expect(Workers::ReceiveLocal).to receive(:perform_async).with(persisted.class.to_s, persisted.id, [])
DiasporaFederation.callbacks.trigger(:receive_entity, received, nil)
end
it "receives a #{entity} for a recipient" do
received = FactoryGirl.build("#{entity}_entity")
persisted = FactoryGirl.create(entity)
expect(Diaspora::Federation::Receive).to receive(entity).with(received).and_return(persisted)
expect(Workers::ReceiveLocal).to receive(:perform_async).with(persisted.class.to_s, persisted.id, [42])
DiasporaFederation.callbacks.trigger(:receive_entity, received, 42)
end
it "does not trigger a ReceiveLocal job if Receive.#{entity} returned nil" do
received = FactoryGirl.build("#{entity}_entity")
expect(Diaspora::Federation::Receive).to receive(entity).with(received).and_return(nil)
expect(Workers::ReceiveLocal).not_to receive(:perform_async)
DiasporaFederation.callbacks.trigger(:receive_entity, received, nil)
end
end
end
describe ":fetch_public_entity" do describe ":fetch_public_entity" do
it "fetches a Post" do it "fetches a Post" do
post = FactoryGirl.create(:status_message, author: alice.person, public: true) post = FactoryGirl.create(:status_message, author: alice.person, public: true)