diff options
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/fan_out_on_write_service_spec.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb index 2b087edd9..36bfcda16 100644 --- a/spec/services/fan_out_on_write_service_spec.rb +++ b/spec/services/fan_out_on_write_service_spec.rb @@ -1,5 +1,40 @@ require 'rails_helper' RSpec.describe FanOutOnWriteService do + let(:author) { Fabricate(:account, username: 'tom') } + let(:status) { Fabricate(:status, text: 'Hello @alice #test', account: author) } + let(:alice) { Fabricate(:user, account: Fabricate(:account, username: 'alice')).account } + let(:follower) { Fabricate(:account, username: 'bob') } + subject { FanOutOnWriteService.new } + + before do + alice + follower.follow!(author) + + ProcessMentionsService.new.call(status) + ProcessHashtagsService.new.call(status) + + subject.call(status) + end + + it 'delivers status to home timeline' do + expect(Feed.new(:home, author).get(1).map(&:id)).to include status.id + end + + it 'delivers status to local followers' do + expect(Feed.new(:home, follower).get(1).map(&:id)).to include status.id + end + + it 'delivers status to mentioned users' do + expect(Feed.new(:mentions, alice).get(1).map(&:id)).to include status.id + end + + it 'delivers status to hashtag' do + expect(Tag.find_by!(name: 'test').statuses.pluck(:id)).to include status.id + end + + it 'delivers status to public timeline' do + expect(Status.as_public_timeline(alice).map(&:id)).to include status.id + end end |