From 4555e1b21c365ed8303ffb7a3325d773c9b8bf31 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 19 May 2021 15:44:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-12-stable-ee --- .../experimentation/components/experiment_spec.js | 72 ---------------------- .../components/gitlab_experiment_spec.js | 72 ++++++++++++++++++++++ spec/frontend/experimentation/utils_spec.js | 20 +++++- 3 files changed, 91 insertions(+), 73 deletions(-) delete mode 100644 spec/frontend/experimentation/components/experiment_spec.js create mode 100644 spec/frontend/experimentation/components/gitlab_experiment_spec.js (limited to 'spec/frontend/experimentation') diff --git a/spec/frontend/experimentation/components/experiment_spec.js b/spec/frontend/experimentation/components/experiment_spec.js deleted file mode 100644 index dbc7da5c535..00000000000 --- a/spec/frontend/experimentation/components/experiment_spec.js +++ /dev/null @@ -1,72 +0,0 @@ -import { shallowMount } from '@vue/test-utils'; -import { extendedWrapper } from 'helpers/vue_test_utils_helper'; -import ExperimentComponent from '~/experimentation/components/experiment.vue'; - -const defaultProps = { name: 'experiment_name' }; -const defaultSlots = { - candidate: `

Candidate

`, - control: `

Control

`, -}; - -describe('ExperimentComponent', () => { - const oldGon = window.gon; - let wrapper; - - const createComponent = (propsData = defaultProps, slots = defaultSlots) => { - wrapper = extendedWrapper(shallowMount(ExperimentComponent, { propsData, slots })); - }; - - const mockVariant = (expectedVariant) => { - window.gon = { experiment: { experiment_name: { variant: expectedVariant } } }; - }; - - afterEach(() => { - wrapper.destroy(); - wrapper = null; - window.gon = oldGon; - }); - - describe('when variant and experiment is set', () => { - it('renders control when it is the active variant', () => { - mockVariant('control'); - - createComponent(); - - expect(wrapper.text()).toBe('Control'); - }); - - it('renders candidate when it is the active variant', () => { - mockVariant('candidate'); - - createComponent(); - - expect(wrapper.text()).toBe('Candidate'); - }); - }); - - describe('when variant or experiment is not set', () => { - it('renders the control slot when no variant is defined', () => { - mockVariant(undefined); - - createComponent(); - - expect(wrapper.text()).toBe('Control'); - }); - - it('renders nothing when behavior is not set for variant', () => { - mockVariant('non-existing-variant'); - - createComponent(defaultProps, { control: `

First

`, other: `

Other

` }); - - expect(wrapper.text()).toBe(''); - }); - - it('renders nothing when there are no slots', () => { - mockVariant('control'); - - createComponent(defaultProps, {}); - - expect(wrapper.text()).toBe(''); - }); - }); -}); diff --git a/spec/frontend/experimentation/components/gitlab_experiment_spec.js b/spec/frontend/experimentation/components/gitlab_experiment_spec.js new file mode 100644 index 00000000000..f52ebf0f3c4 --- /dev/null +++ b/spec/frontend/experimentation/components/gitlab_experiment_spec.js @@ -0,0 +1,72 @@ +import { shallowMount } from '@vue/test-utils'; +import { extendedWrapper } from 'helpers/vue_test_utils_helper'; +import ExperimentComponent from '~/experimentation/components/gitlab_experiment.vue'; + +const defaultProps = { name: 'experiment_name' }; +const defaultSlots = { + candidate: `

Candidate

`, + control: `

Control

`, +}; + +describe('ExperimentComponent', () => { + const oldGon = window.gon; + let wrapper; + + const createComponent = (propsData = defaultProps, slots = defaultSlots) => { + wrapper = extendedWrapper(shallowMount(ExperimentComponent, { propsData, slots })); + }; + + const mockVariant = (expectedVariant) => { + window.gon = { experiment: { experiment_name: { variant: expectedVariant } } }; + }; + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + window.gon = oldGon; + }); + + describe('when variant and experiment is set', () => { + it('renders control when it is the active variant', () => { + mockVariant('control'); + + createComponent(); + + expect(wrapper.text()).toBe('Control'); + }); + + it('renders candidate when it is the active variant', () => { + mockVariant('candidate'); + + createComponent(); + + expect(wrapper.text()).toBe('Candidate'); + }); + }); + + describe('when variant or experiment is not set', () => { + it('renders the control slot when no variant is defined', () => { + mockVariant(undefined); + + createComponent(); + + expect(wrapper.text()).toBe('Control'); + }); + + it('renders nothing when behavior is not set for variant', () => { + mockVariant('non-existing-variant'); + + createComponent(defaultProps, { control: `

First

`, other: `

Other

` }); + + expect(wrapper.text()).toBe(''); + }); + + it('renders nothing when there are no slots', () => { + mockVariant('control'); + + createComponent(defaultProps, {}); + + expect(wrapper.text()).toBe(''); + }); + }); +}); diff --git a/spec/frontend/experimentation/utils_spec.js b/spec/frontend/experimentation/utils_spec.js index ec09bbab349..2ba8c65a252 100644 --- a/spec/frontend/experimentation/utils_spec.js +++ b/spec/frontend/experimentation/utils_spec.js @@ -1,5 +1,9 @@ import { assignGitlabExperiment } from 'helpers/experimentation_helper'; -import { DEFAULT_VARIANT, CANDIDATE_VARIANT } from '~/experimentation/constants'; +import { + DEFAULT_VARIANT, + CANDIDATE_VARIANT, + TRACKING_CONTEXT_SCHEMA, +} from '~/experimentation/constants'; import * as experimentUtils from '~/experimentation/utils'; describe('experiment Utilities', () => { @@ -19,6 +23,20 @@ describe('experiment Utilities', () => { }); }); + describe('getExperimentContexts', () => { + describe.each` + gon | input | output + ${[TEST_KEY, '_data_']} | ${[TEST_KEY]} | ${[{ schema: TRACKING_CONTEXT_SCHEMA, data: { variant: '_data_' } }]} + ${[]} | ${[TEST_KEY]} | ${[]} + `('with input=$input and gon=$gon', ({ gon, input, output }) => { + assignGitlabExperiment(...gon); + + it(`returns ${output}`, () => { + expect(experimentUtils.getExperimentContexts(...input)).toEqual(output); + }); + }); + }); + describe('isExperimentVariant', () => { describe.each` gon | input | output -- cgit v1.2.1