| 
									
										
										
										
											2017-04-10 15:27:03 -04:00
										 |  |  | require 'rails_helper' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  | describe Admin::ReportsController do | 
					
						
							| 
									
										
										
										
											2017-04-27 19:21:38 -04:00
										 |  |  |   render_views | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |   let(:user) { Fabricate(:user, admin: true) } | 
					
						
							|  |  |  |   before do | 
					
						
							|  |  |  |     sign_in user, scope: :user | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-10 15:27:03 -04:00
										 |  |  |   describe 'GET #index' do | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |     it 'returns http success with no filters' do | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  |       specified = Fabricate(:report, action_taken: false) | 
					
						
							|  |  |  |       Fabricate(:report, action_taken: true) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |       get :index | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  |       reports = assigns(:reports).to_a | 
					
						
							|  |  |  |       expect(reports.size).to eq 1
 | 
					
						
							|  |  |  |       expect(reports[0]).to eq specified | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |       expect(response).to have_http_status(:success) | 
					
						
							| 
									
										
										
										
											2017-04-10 15:27:03 -04:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |     it 'returns http success with resolved filter' do | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  |       specified = Fabricate(:report, action_taken: true) | 
					
						
							|  |  |  |       Fabricate(:report, action_taken: false) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |       get :index, params: { resolved: 1 } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  |       reports = assigns(:reports).to_a | 
					
						
							|  |  |  |       expect(reports.size).to eq 1
 | 
					
						
							|  |  |  |       expect(reports[0]).to eq specified | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |       expect(response).to have_http_status(:success) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe 'GET #show' do | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  |     it 'renders report' do | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  |       report = Fabricate(:report) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       get :show, params: { id: report } | 
					
						
							| 
									
										
										
										
											2017-05-30 01:12:34 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expect(assigns(:report)).to eq report | 
					
						
							| 
									
										
										
										
											2017-04-10 15:27:03 -04:00
										 |  |  |       expect(response).to have_http_status(:success) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-04-14 05:10:28 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe 'PUT #update' do | 
					
						
							|  |  |  |     describe 'with an unknown outcome' do | 
					
						
							|  |  |  |       it 'rejects the change' do | 
					
						
							|  |  |  |         report = Fabricate(:report) | 
					
						
							|  |  |  |         put :update, params: { id: report, outcome: 'unknown' } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         expect(response).to have_http_status(:missing) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe 'with an outcome of `resolve`' do | 
					
						
							|  |  |  |       it 'resolves the report' do | 
					
						
							|  |  |  |         report = Fabricate(:report) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         put :update, params: { id: report, outcome: 'resolve' } | 
					
						
							|  |  |  |         expect(response).to redirect_to(admin_report_path(report)) | 
					
						
							|  |  |  |         report.reload | 
					
						
							|  |  |  |         expect(report.action_taken_by_account).to eq user.account | 
					
						
							|  |  |  |         expect(report.action_taken).to eq true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe 'with an outcome of `suspend`' do | 
					
						
							|  |  |  |       it 'suspends the reported account' do | 
					
						
							|  |  |  |         report = Fabricate(:report) | 
					
						
							|  |  |  |         allow(Admin::SuspensionWorker).to receive(:perform_async) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         put :update, params: { id: report, outcome: 'suspend' } | 
					
						
							|  |  |  |         expect(response).to redirect_to(admin_report_path(report)) | 
					
						
							|  |  |  |         report.reload | 
					
						
							|  |  |  |         expect(report.action_taken_by_account).to eq user.account | 
					
						
							|  |  |  |         expect(report.action_taken).to eq true | 
					
						
							|  |  |  |         expect(Admin::SuspensionWorker). | 
					
						
							|  |  |  |           to have_received(:perform_async).with(report.target_account_id) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     describe 'with an outsome of `silence`' do | 
					
						
							|  |  |  |       it 'silences the reported account' do | 
					
						
							|  |  |  |         report = Fabricate(:report) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         put :update, params: { id: report, outcome: 'silence' } | 
					
						
							|  |  |  |         expect(response).to redirect_to(admin_report_path(report)) | 
					
						
							|  |  |  |         report.reload | 
					
						
							|  |  |  |         expect(report.action_taken_by_account).to eq user.account | 
					
						
							|  |  |  |         expect(report.action_taken).to eq true | 
					
						
							|  |  |  |         expect(report.target_account).to be_silenced | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-04-10 15:27:03 -04:00
										 |  |  | end |