| 
									
										
										
										
											2017-05-05 06:44:39 +09:00
										 |  |  | require 'rails_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-02 18:58:48 +02:00
										 |  |  | RSpec.describe SuspendAccountService, type: :service do | 
					
						
							| 
									
										
										
										
											2017-05-05 06:44:39 +09:00
										 |  |  |   describe '#call' do | 
					
						
							| 
									
										
										
										
											2018-08-20 13:28:05 +02:00
										 |  |  |     before do | 
					
						
							|  |  |  |       stub_request(:post, "https://alice.com/inbox").to_return(status: 201) | 
					
						
							|  |  |  |       stub_request(:post, "https://bob.com/inbox").to_return(status: 201) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-05 06:44:39 +09:00
										 |  |  |     subject do | 
					
						
							|  |  |  |       -> { described_class.new.call(account) } | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let!(:account) { Fabricate(:account) } | 
					
						
							|  |  |  |     let!(:status) { Fabricate(:status, account: account) } | 
					
						
							|  |  |  |     let!(:media_attachment) { Fabricate(:media_attachment, account: account) } | 
					
						
							|  |  |  |     let!(:notification) { Fabricate(:notification, account: account) } | 
					
						
							|  |  |  |     let!(:favourite) { Fabricate(:favourite, account: account) } | 
					
						
							|  |  |  |     let!(:active_relationship) { Fabricate(:follow, account: account) } | 
					
						
							|  |  |  |     let!(:passive_relationship) { Fabricate(:follow, target_account: account) } | 
					
						
							|  |  |  |     let!(:subscription) { Fabricate(:subscription, account: account) } | 
					
						
							| 
									
										
										
										
											2018-08-20 13:28:05 +02:00
										 |  |  |     let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', protocol: :activitypub) } | 
					
						
							|  |  |  |     let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } | 
					
						
							| 
									
										
										
										
											2017-05-05 06:44:39 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it 'deletes associated records' do | 
					
						
							|  |  |  |       is_expected.to change { | 
					
						
							|  |  |  |         [ | 
					
						
							|  |  |  |           account.statuses, | 
					
						
							|  |  |  |           account.media_attachments, | 
					
						
							|  |  |  |           account.stream_entries, | 
					
						
							|  |  |  |           account.notifications, | 
					
						
							|  |  |  |           account.favourites, | 
					
						
							|  |  |  |           account.active_relationships, | 
					
						
							|  |  |  |           account.passive_relationships, | 
					
						
							|  |  |  |           account.subscriptions | 
					
						
							|  |  |  |         ].map(&:count) | 
					
						
							|  |  |  |       }.from([1, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0]) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2018-08-20 13:28:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it 'sends a delete actor activity to all known inboxes' do | 
					
						
							|  |  |  |       subject.call | 
					
						
							|  |  |  |       expect(a_request(:post, "https://alice.com/inbox")).to have_been_made.once | 
					
						
							|  |  |  |       expect(a_request(:post, "https://bob.com/inbox")).to have_been_made.once | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2017-05-05 06:44:39 +09:00
										 |  |  |   end | 
					
						
							|  |  |  | end |