Skip to content
Extraits de code Groupes Projets
deferred_dispatch_spec.rb 1,32 ko
Newer Older
require 'spec_helper'

describe Workers::DeferredDispatch do
  it "handles non existing records gracefully" do
    expect {
      described_class.new.perform(alice.id, "Comment", 0, {})
    }.to_not raise_error
  end

  describe "#social relay functionality" do
    let(:message) { FactoryGirl.create(:status_message, author: alice.person, public: true) }
    before do
      AppConfig.relay.outbound.send = true
    end

    it "triggers fetch of relay handle" do
      allow(Person).to receive(:find_by).and_return(nil)

      expect(Workers::FetchWebfinger).to receive(:perform_async)

      described_class.new.perform(alice.id, "StatusMessage", message.id, {})
    end

    it "triggers post to relay" do
      relay_person = FactoryGirl.create(:person, diaspora_handle: AppConfig.relay.outbound.handle)
      opts = {"additional_subscribers" => [relay_person], "services" => []}
      allow(Person).to receive(:find_by).and_return(relay_person)
      postzord = double
      allow(Postzord::Dispatcher).to receive(:build).with(any_args).and_return(postzord)
      allow(postzord).to receive(:post)
      allow(Person).to receive(:where).and_return([relay_person])

      expect(Postzord::Dispatcher).to receive(:build).with(alice, message, opts)

      described_class.new.perform(alice.id, "StatusMessage", message.id, {})
    end
  end