Add coverage for TOS interstitial interruption flow of web app controller concern (#35235)
This commit is contained in:
		
							
								
								
									
										68
									
								
								spec/controllers/concerns/web_app_controller_concern_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								spec/controllers/concerns/web_app_controller_concern_spec.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require 'rails_helper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RSpec.describe WebAppControllerConcern do
 | 
				
			||||||
 | 
					  render_views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  controller(ApplicationController) do
 | 
				
			||||||
 | 
					    include WebAppControllerConcern # rubocop:disable RSpec/DescribedClass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def show
 | 
				
			||||||
 | 
					      render plain: 'show'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before do
 | 
				
			||||||
 | 
					    routes.draw { get 'show' => 'anonymous#show' }
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'when signed in' do
 | 
				
			||||||
 | 
					    let(:user) { Fabricate(:user) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    before { sign_in(user) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when user does not require TOS interstitial' do
 | 
				
			||||||
 | 
					      before { user.update(require_tos_interstitial: false) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'renders requested page as expected' do
 | 
				
			||||||
 | 
					        get :show
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        expect(response)
 | 
				
			||||||
 | 
					          .to have_http_status(:success)
 | 
				
			||||||
 | 
					        expect(response.body)
 | 
				
			||||||
 | 
					          .to match(/show/)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when user does require TOS interstitial' do
 | 
				
			||||||
 | 
					      before { user.update(require_tos_interstitial: true) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      context 'when there is no TOS record' do
 | 
				
			||||||
 | 
					        before { TermsOfService.destroy_all }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it 'renders requested page as expected' do
 | 
				
			||||||
 | 
					          get :show
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          expect(response)
 | 
				
			||||||
 | 
					            .to have_http_status(:success)
 | 
				
			||||||
 | 
					          expect(response.body)
 | 
				
			||||||
 | 
					            .to match(/show/)
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      context 'when there is a TOS record' do
 | 
				
			||||||
 | 
					        before { Fabricate :terms_of_service, published_at: 1.day.ago }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        it 'renders interstitial page instead of expected content' do
 | 
				
			||||||
 | 
					          get :show
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          expect(response)
 | 
				
			||||||
 | 
					            .to have_http_status(:success)
 | 
				
			||||||
 | 
					          expect(response.body)
 | 
				
			||||||
 | 
					            .to match(I18n.t('terms_of_service_interstitial.title', domain: local_domain_uri.host))
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Reference in New Issue
	
	Block a user