46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| RSpec.describe "Gitlab::Experiment", :js, feature_category: :activation do
 | |
|   # This is part of a set of tests that ensure that tracking remains
 | |
|   # consistent at the front end layer. Since we don't want to actually
 | |
|   # introduce an experiment in real code, we're going to simulate it
 | |
|   # here.
 | |
|   let(:user) { create(:user) }
 | |
| 
 | |
|   before do
 | |
|     admin = create(:admin)
 | |
|     sign_in(admin)
 | |
|     enable_admin_mode!(admin)
 | |
|     stub_experiments(null_hypothesis: :candidate)
 | |
|   end
 | |
| 
 | |
|   describe 'with event tracking' do
 | |
|     it 'publishes the experiments that have been run to the client', :experiment do
 | |
|       allow_next_instance_of(Admin::AbuseReportsController) do |instance|
 | |
|         allow(instance).to receive(:index).and_wrap_original do |original|
 | |
|           instance.experiment(:null_hypothesis, user: instance.current_user) do |e|
 | |
|             e.control { original.call }
 | |
|             e.candidate { original.call }
 | |
|           end
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       visit admin_abuse_reports_path
 | |
| 
 | |
|       expect(page).to have_content('Abuse Reports')
 | |
| 
 | |
|       published_experiments = page.evaluate_script('window.gl.experiments')
 | |
|       expect(published_experiments).to include({
 | |
|         'null_hypothesis' => {
 | |
|           'excluded' => false,
 | |
|           'experiment' => 'null_hypothesis',
 | |
|           'key' => anything,
 | |
|           'variant' => 'candidate'
 | |
|         }
 | |
|       })
 | |
|     end
 | |
|   end
 | |
| end
 |