Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/gitlab_experiments_spec.rb')
-rw-r--r--spec/features/gitlab_experiments_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/features/gitlab_experiments_spec.rb b/spec/features/gitlab_experiments_spec.rb
new file mode 100644
index 00000000000..76b418adcea
--- /dev/null
+++ b/spec/features/gitlab_experiments_spec.rb
@@ -0,0 +1,44 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe "Gitlab::Experiment", :js 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)
+ gitlab_enable_admin_mode_sign_in(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.use { original.call }
+ e.try { original.call }
+ end
+ end
+ end
+
+ visit admin_abuse_reports_path
+
+ expect(page).to have_content('Abuse Reports')
+
+ published_experiments = page.evaluate_script('window.gon.experiment')
+ expect(published_experiments).to include({
+ 'null_hypothesis' => {
+ 'experiment' => 'null_hypothesis',
+ 'key' => anything,
+ 'variant' => 'candidate'
+ }
+ })
+ end
+ end
+end