Remove usage of assigns in controller specs (#30195)
				
					
				
			This commit is contained in:
		
							parent
							
								
									ae363f0555
								
							
						
					
					
						commit
						5b595b8a5a
					
				| @ -46,7 +46,7 @@ | |||||||
|           %th= t('imports.failures') |           %th= t('imports.failures') | ||||||
|       %tbody |       %tbody | ||||||
|         - @recent_imports.each do |import| |         - @recent_imports.each do |import| | ||||||
|           %tr |           %tr{ id: dom_id(import) } | ||||||
|             %td= t("imports.types.#{import.type}") |             %td= t("imports.types.#{import.type}") | ||||||
|             %td |             %td | ||||||
|               - if import.state_unconfirmed? |               - if import.state_unconfirmed? | ||||||
|  | |||||||
| @ -40,15 +40,16 @@ RSpec.describe Admin::AccountsController do | |||||||
| 
 | 
 | ||||||
|       expect(response) |       expect(response) | ||||||
|         .to have_http_status(200) |         .to have_http_status(200) | ||||||
|       expect(assigns(:accounts)) |       expect(accounts_table_rows.size) | ||||||
|         .to have_attributes( |         .to eq(1) | ||||||
|           count: eq(1), |  | ||||||
|           klass: be(Account) |  | ||||||
|         ) |  | ||||||
|       expect(AccountFilter) |       expect(AccountFilter) | ||||||
|         .to have_received(:new) |         .to have_received(:new) | ||||||
|         .with(hash_including(params)) |         .with(hash_including(params)) | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
|  |     def accounts_table_rows | ||||||
|  |       Nokogiri::Slop(response.body).css('table.accounts-table tr') | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #show' do |   describe 'GET #show' do | ||||||
|  | |||||||
| @ -13,7 +13,6 @@ RSpec.describe Admin::DomainAllowsController do | |||||||
|     it 'assigns a new domain allow' do |     it 'assigns a new domain allow' do | ||||||
|       get :new |       get :new | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:domain_allow)).to be_instance_of(DomainAllow) |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | |||||||
| @ -13,7 +13,6 @@ RSpec.describe Admin::DomainBlocksController do | |||||||
|     it 'assigns a new domain block' do |     it 'assigns a new domain block' do | ||||||
|       get :new |       get :new | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:domain_block)).to be_instance_of(DomainBlock) |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| @ -171,7 +170,6 @@ RSpec.describe Admin::DomainBlocksController do | |||||||
|     it 'returns http success' do |     it 'returns http success' do | ||||||
|       get :edit, params: { id: domain_block.id } |       get :edit, params: { id: domain_block.id } | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:domain_block)).to be_instance_of(DomainBlock) |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | |||||||
| @ -42,11 +42,8 @@ RSpec.describe Admin::ExportDomainBlocksController do | |||||||
|         post :import, params: { admin_import: { data: fixture_file_upload('domain_blocks.csv') } } |         post :import, params: { admin_import: { data: fixture_file_upload('domain_blocks.csv') } } | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       it 'renders page with expected domain blocks' do |       it 'renders page with expected domain blocks and returns http success' do | ||||||
|         expect(assigns(:domain_blocks).map { |block| [block.domain, block.severity.to_sym] }).to contain_exactly(['bad.domain', :silence], ['worse.domain', :suspend], ['reject.media', :noop]) |         expect(mapped_batch_table_rows).to contain_exactly(['bad.domain', :silence], ['worse.domain', :suspend], ['reject.media', :noop]) | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       it 'returns http success' do |  | ||||||
|         expect(response).to have_http_status(200) |         expect(response).to have_http_status(200) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
| @ -56,14 +53,19 @@ RSpec.describe Admin::ExportDomainBlocksController do | |||||||
|         post :import, params: { admin_import: { data: fixture_file_upload('domain_blocks_list.txt') } } |         post :import, params: { admin_import: { data: fixture_file_upload('domain_blocks_list.txt') } } | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       it 'renders page with expected domain blocks' do |       it 'renders page with expected domain blocks and returns http success' do | ||||||
|         expect(assigns(:domain_blocks).map { |block| [block.domain, block.severity.to_sym] }).to contain_exactly(['bad.domain', :suspend], ['worse.domain', :suspend], ['reject.media', :suspend]) |         expect(mapped_batch_table_rows).to contain_exactly(['bad.domain', :suspend], ['worse.domain', :suspend], ['reject.media', :suspend]) | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       it 'returns http success' do |  | ||||||
|         expect(response).to have_http_status(200) |         expect(response).to have_http_status(200) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
|  |     def mapped_batch_table_rows | ||||||
|  |       batch_table_rows.map { |row| [row.at_css('[id$=_domain]')['value'], row.at_css('[id$=_severity]')['value'].to_sym] } | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def batch_table_rows | ||||||
|  |       Nokogiri::Slop(response.body).css('body div.batch-table__row') | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   it 'displays error on no file selected' do |   it 'displays error on no file selected' do | ||||||
|  | |||||||
| @ -28,12 +28,15 @@ RSpec.describe Admin::InstancesController do | |||||||
|     it 'renders instances' do |     it 'renders instances' do | ||||||
|       get :index, params: { page: 2 } |       get :index, params: { page: 2 } | ||||||
| 
 | 
 | ||||||
|       instances = assigns(:instances).to_a |       expect(instance_directory_links.size).to eq(1) | ||||||
|       expect(instances.size).to eq 1 |       expect(instance_directory_links.first.text.strip).to match('less.popular') | ||||||
|       expect(instances[0].domain).to eq 'less.popular' |  | ||||||
| 
 | 
 | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|     end |     end | ||||||
|  | 
 | ||||||
|  |     def instance_directory_links | ||||||
|  |       Nokogiri::Slop(response.body).css('div.directory__tag a') | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #show' do |   describe 'GET #show' do | ||||||
|  | |||||||
| @ -18,7 +18,8 @@ describe Admin::InvitesController do | |||||||
| 
 | 
 | ||||||
|     it 'renders index page' do |     it 'renders index page' do | ||||||
|       expect(subject).to render_template :index |       expect(subject).to render_template :index | ||||||
|       expect(assigns(:invites)).to include invite |       expect(response.body) | ||||||
|  |         .to include(invite.code) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,39 +13,39 @@ describe Admin::ReportsController do | |||||||
| 
 | 
 | ||||||
|   describe 'GET #index' do |   describe 'GET #index' do | ||||||
|     it 'returns http success with no filters' do |     it 'returns http success with no filters' do | ||||||
|       specified = Fabricate(:report, action_taken_at: nil) |       specified = Fabricate(:report, action_taken_at: nil, comment: 'First report') | ||||||
|       Fabricate(:report, action_taken_at: Time.now.utc) |       other = Fabricate(:report, action_taken_at: Time.now.utc, comment: 'Second report') | ||||||
| 
 | 
 | ||||||
|       get :index |       get :index | ||||||
| 
 | 
 | ||||||
|       reports = assigns(:reports).to_a |  | ||||||
|       expect(reports.size).to eq 1 |  | ||||||
|       expect(reports[0]).to eq specified |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(specified.comment) | ||||||
|  |         .and not_include(other.comment) | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     it 'returns http success with resolved filter' do |     it 'returns http success with resolved filter' do | ||||||
|       specified = Fabricate(:report, action_taken_at: Time.now.utc) |       specified = Fabricate(:report, action_taken_at: Time.now.utc, comment: 'First report') | ||||||
|       Fabricate(:report, action_taken_at: nil) |       other = Fabricate(:report, action_taken_at: nil, comment: 'Second report') | ||||||
| 
 | 
 | ||||||
|       get :index, params: { resolved: '1' } |       get :index, params: { resolved: '1' } | ||||||
| 
 | 
 | ||||||
|       reports = assigns(:reports).to_a |  | ||||||
|       expect(reports.size).to eq 1 |  | ||||||
|       expect(reports[0]).to eq specified |  | ||||||
| 
 |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(specified.comment) | ||||||
|  |         .and not_include(other.comment) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   describe 'GET #show' do |   describe 'GET #show' do | ||||||
|     it 'renders report' do |     it 'renders report' do | ||||||
|       report = Fabricate(:report) |       report = Fabricate(:report, comment: 'A big problem') | ||||||
| 
 | 
 | ||||||
|       get :show, params: { id: report } |       get :show, params: { id: report } | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:report)).to eq report |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(report.comment) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -46,8 +46,9 @@ describe AuthorizeInteractionsController do | |||||||
| 
 | 
 | ||||||
|         get :show, params: { acct: 'http://example.com' } |         get :show, params: { acct: 'http://example.com' } | ||||||
| 
 | 
 | ||||||
|         expect(response).to have_http_status(302) |         expect(response) | ||||||
|         expect(assigns(:resource)).to eq account |           .to have_http_status(302) | ||||||
|  |           .and redirect_to(web_url("@#{account.pretty_acct}")) | ||||||
|       end |       end | ||||||
| 
 | 
 | ||||||
|       it 'sets resource from acct uri' do |       it 'sets resource from acct uri' do | ||||||
| @ -58,8 +59,9 @@ describe AuthorizeInteractionsController do | |||||||
| 
 | 
 | ||||||
|         get :show, params: { acct: 'acct:found@hostname' } |         get :show, params: { acct: 'acct:found@hostname' } | ||||||
| 
 | 
 | ||||||
|         expect(response).to have_http_status(302) |         expect(response) | ||||||
|         expect(assigns(:resource)).to eq account |           .to have_http_status(302) | ||||||
|  |           .and redirect_to(web_url("@#{account.pretty_acct}")) | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ describe AccountControllerConcern do | |||||||
|     include AccountControllerConcern |     include AccountControllerConcern | ||||||
| 
 | 
 | ||||||
|     def success |     def success | ||||||
|       head 200 |       render plain: @account.username # rubocop:disable RSpec/InstanceVariable | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| @ -51,12 +51,13 @@ describe AccountControllerConcern do | |||||||
|   context 'when account is not suspended' do |   context 'when account is not suspended' do | ||||||
|     let(:account) { Fabricate(:account, username: 'username') } |     let(:account) { Fabricate(:account, username: 'username') } | ||||||
| 
 | 
 | ||||||
|     it 'assigns @account, returns success, and sets link headers' do |     it 'Prepares the account, returns success, and sets link headers' do | ||||||
|       get 'success', params: { account_username: account.username } |       get 'success', params: { account_username: account.username } | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:account)).to eq account |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|       expect(response.headers['Link'].to_s).to eq(expected_link_headers) |       expect(response.headers['Link'].to_s).to eq(expected_link_headers) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(account.username) | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def expected_link_headers |     def expected_link_headers | ||||||
|  | |||||||
| @ -21,9 +21,10 @@ RSpec.describe Settings::ImportsController do | |||||||
| 
 | 
 | ||||||
|     it 'assigns the expected imports', :aggregate_failures do |     it 'assigns the expected imports', :aggregate_failures do | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|       expect(assigns(:recent_imports)).to eq [import] |  | ||||||
|       expect(assigns(:recent_imports)).to_not include(other_import) |  | ||||||
|       expect(response.headers['Cache-Control']).to include('private, no-store') |       expect(response.headers['Cache-Control']).to include('private, no-store') | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include("bulk_import_#{import.id}") | ||||||
|  |         .and not_include("bulk_import_#{other_import.id}") | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| @ -261,7 +262,8 @@ RSpec.describe Settings::ImportsController do | |||||||
|       it 'does not creates an unconfirmed bulk_import', :aggregate_failures do |       it 'does not creates an unconfirmed bulk_import', :aggregate_failures do | ||||||
|         expect { subject }.to_not(change { user.account.bulk_imports.count }) |         expect { subject }.to_not(change { user.account.bulk_imports.count }) | ||||||
| 
 | 
 | ||||||
|         expect(assigns(:import).errors).to_not be_empty |         expect(response.body) | ||||||
|  |           .to include('field_with_errors') | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,11 +9,16 @@ describe Settings::TwoFactorAuthentication::ConfirmationsController do | |||||||
|     it 'renders the new view' do |     it 'renders the new view' do | ||||||
|       subject |       subject | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:confirmation)).to be_instance_of Form::TwoFactorConfirmation |  | ||||||
|       expect(assigns(:provision_url)).to eq 'otpauth://totp/cb6e6126.ngrok.io:local-part%40domain?secret=thisisasecretforthespecofnewview&issuer=cb6e6126.ngrok.io' |  | ||||||
|       expect(assigns(:qrcode)).to be_instance_of RQRCode::QRCode |  | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|       expect(response).to render_template(:new) |       expect(response).to render_template(:new) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(qr_code_markup) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def qr_code_markup | ||||||
|  |       RQRCode::QRCode.new( | ||||||
|  |         'otpauth://totp/cb6e6126.ngrok.io:local-part%40domain?secret=thisisasecretforthespecofnewview&issuer=cb6e6126.ngrok.io' | ||||||
|  |       ).as_svg(padding: 0, module_size: 4) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
| @ -61,10 +66,10 @@ describe Settings::TwoFactorAuthentication::ConfirmationsController do | |||||||
|             expect { post_create_with_options } |             expect { post_create_with_options } | ||||||
|               .to change { user.reload.otp_secret }.to 'thisisasecretforthespecofnewview' |               .to change { user.reload.otp_secret }.to 'thisisasecretforthespecofnewview' | ||||||
| 
 | 
 | ||||||
|             expect(assigns(:recovery_codes)).to eq otp_backup_codes |  | ||||||
|             expect(flash[:notice]).to eq 'Two-factor authentication successfully enabled' |             expect(flash[:notice]).to eq 'Two-factor authentication successfully enabled' | ||||||
|             expect(response).to have_http_status(200) |             expect(response).to have_http_status(200) | ||||||
|             expect(response).to render_template('settings/two_factor_authentication/recovery_codes/index') |             expect(response).to render_template('settings/two_factor_authentication/recovery_codes/index') | ||||||
|  |             expect(response.body).to include(*otp_backup_codes) | ||||||
|           end |           end | ||||||
|         end |         end | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -15,10 +15,11 @@ describe Settings::TwoFactorAuthentication::RecoveryCodesController do | |||||||
|       sign_in user, scope: :user |       sign_in user, scope: :user | ||||||
|       post :create, session: { challenge_passed_at: Time.now.utc } |       post :create, session: { challenge_passed_at: Time.now.utc } | ||||||
| 
 | 
 | ||||||
|       expect(assigns(:recovery_codes)).to eq otp_backup_codes |  | ||||||
|       expect(flash[:notice]).to eq 'Recovery codes successfully regenerated' |       expect(flash[:notice]).to eq 'Recovery codes successfully regenerated' | ||||||
|       expect(response).to have_http_status(200) |       expect(response).to have_http_status(200) | ||||||
|       expect(response).to render_template(:index) |       expect(response).to render_template(:index) | ||||||
|  |       expect(response.body) | ||||||
|  |         .to include(*otp_backup_codes) | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     it 'redirects when not signed in' do |     it 'redirects when not signed in' do | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user