| 
									
										
										
										
											2017-02-05 19:51:56 -06:00
										 |  |  | require 'rails_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-02 18:58:48 +02:00
										 |  |  | RSpec.describe MuteService, type: :service do | 
					
						
							| 
									
										
										
										
											2017-05-06 23:31:07 +09:00
										 |  |  |   subject do | 
					
						
							|  |  |  |     -> { described_class.new.call(account, target_account) } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   let(:account) { Fabricate(:account) } | 
					
						
							|  |  |  |   let(:target_account) { Fabricate(:account) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe 'home timeline' do | 
					
						
							|  |  |  |     let(:status) { Fabricate(:status, account: target_account) } | 
					
						
							|  |  |  |     let(:other_account_status) { Fabricate(:status) } | 
					
						
							|  |  |  |     let(:home_timeline_key) { FeedManager.instance.key(:home, account.id) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     before do | 
					
						
							|  |  |  |       Redis.current.del(home_timeline_key) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "clears account's statuses" do | 
					
						
							| 
									
										
										
										
											2017-11-18 00:16:48 +01:00
										 |  |  |       FeedManager.instance.push_to_home(account, status) | 
					
						
							|  |  |  |       FeedManager.instance.push_to_home(account, other_account_status) | 
					
						
							| 
									
										
										
										
											2017-05-06 23:31:07 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |       is_expected.to change { | 
					
						
							|  |  |  |         Redis.current.zrange(home_timeline_key, 0, -1) | 
					
						
							|  |  |  |       }.from([status.id.to_s, other_account_status.id.to_s]).to([other_account_status.id.to_s]) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it 'mutes account' do | 
					
						
							|  |  |  |     is_expected.to change { | 
					
						
							|  |  |  |       account.muting?(target_account) | 
					
						
							|  |  |  |     }.from(false).to(true) | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-11-14 20:56:41 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  |   context 'without specifying a notifications parameter' do | 
					
						
							|  |  |  |     it 'mutes notifications from the account' do | 
					
						
							|  |  |  |       is_expected.to change { | 
					
						
							|  |  |  |         account.muting_notifications?(target_account) | 
					
						
							|  |  |  |       }.from(false).to(true) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   context 'with a true notifications parameter' do | 
					
						
							|  |  |  |     subject do | 
					
						
							|  |  |  |       -> { described_class.new.call(account, target_account, notifications: true) } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'mutes notifications from the account' do | 
					
						
							|  |  |  |       is_expected.to change { | 
					
						
							|  |  |  |         account.muting_notifications?(target_account) | 
					
						
							|  |  |  |       }.from(false).to(true) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   context 'with a false notifications parameter' do | 
					
						
							|  |  |  |     subject do | 
					
						
							|  |  |  |       -> { described_class.new.call(account, target_account, notifications: false) } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it 'does not mute notifications from the account' do | 
					
						
							|  |  |  |       is_expected.to_not change { | 
					
						
							|  |  |  |         account.muting_notifications?(target_account) | 
					
						
							|  |  |  |       }.from(false) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-02-05 19:51:56 -06:00
										 |  |  | end |