From 93212bc2c45eb06bdb1eb1f05a69701001a2a1fb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Nov 2016 15:56:34 +0100 Subject: Add test for FanOutOnWriteService --- spec/services/fan_out_on_write_service_spec.rb | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'spec/services/fan_out_on_write_service_spec.rb') 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 -- cgit