85 lines
2.5 KiB
Ruby
85 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require Rails.root.join("spec/shared_behaviors/stream")
|
|
|
|
describe Stream::Multi do
|
|
before do
|
|
@stream = Stream::Multi.new(alice, max_time: Time.zone.now, order: "updated_at")
|
|
end
|
|
|
|
describe "shared behaviors" do
|
|
it_should_behave_like "it is a stream"
|
|
end
|
|
|
|
describe "#posts" do
|
|
it "calls EvilQuery::MultiStream with correct parameters" do
|
|
expect(::EvilQuery::MultiStream).to receive(:new)
|
|
.with(alice, "updated_at", @stream.max_time,
|
|
AppConfig.settings.community_spotlight.enable? &&
|
|
alice.show_community_spotlight_in_stream?)
|
|
.and_return(double.tap {|m| allow(m).to receive(:make_relation!) })
|
|
@stream.posts
|
|
end
|
|
end
|
|
|
|
describe "#publisher_opts" do
|
|
it "prefills, sets public, and autoexpands if welcome? is set" do
|
|
prefill_text = "sup?"
|
|
allow(@stream).to receive(:welcome?).and_return(true)
|
|
allow(@stream).to receive(:publisher_prefill).and_return(prefill_text)
|
|
expect(@stream.send(:publisher_opts)).to eq(open: true, prefill: prefill_text, public: true)
|
|
end
|
|
|
|
it "provides no opts if welcome? is not set" do
|
|
allow(@stream).to receive(:welcome?).and_return(false)
|
|
expect(@stream.send(:publisher_opts)).to eq(public: false)
|
|
end
|
|
end
|
|
|
|
describe "#publisher_prefill" do
|
|
before do
|
|
@tag = ActsAsTaggableOn::Tag.find_or_create_by(name: "cats")
|
|
@tag_following = alice.tag_followings.create(tag_id: @tag.id)
|
|
|
|
@stream = Stream::Multi.new(alice)
|
|
end
|
|
|
|
it "returns includes new user hashtag" do
|
|
expect(@stream.send(:publisher_prefill)).to match(/#NewHere/i)
|
|
end
|
|
|
|
it "includes followed hashtags" do
|
|
expect(@stream.send(:publisher_prefill)).to include("#cats")
|
|
end
|
|
|
|
context "when invited by another user" do
|
|
before do
|
|
@user = FactoryBot.create(:user, invited_by: alice)
|
|
@inviter = alice.person
|
|
|
|
@stream = Stream::Multi.new(@user)
|
|
end
|
|
|
|
it "includes a mention of the inviter" do
|
|
mention = "@{#{@inviter.diaspora_handle}}"
|
|
expect(@stream.send(:publisher_prefill)).to include(mention)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#welcome?" do
|
|
before do
|
|
@stream = Stream::Multi.new(alice)
|
|
end
|
|
|
|
it "returns true if user is getting started" do
|
|
alice.getting_started = true
|
|
expect(@stream.send(:welcome?)).to be true
|
|
end
|
|
|
|
it "returns false if user is getting started" do
|
|
alice.getting_started = false
|
|
expect(@stream.send(:welcome?)).to be false
|
|
end
|
|
end
|
|
end
|