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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-02-01 00:14:51 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-02-01 00:14:51 +0300
commitf2ed38a6b50ee59ce280a3e7d5125b3a35c5f17e (patch)
tree5f91d58f1d458f629f8125d9516f131ff08c4a67 /spec/frontend/google_tag_manager
parent634e9bccc65592100a40849912fe7bb0a52e1b24 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/google_tag_manager')
-rw-r--r--spec/frontend/google_tag_manager/index_spec.js120
1 files changed, 100 insertions, 20 deletions
diff --git a/spec/frontend/google_tag_manager/index_spec.js b/spec/frontend/google_tag_manager/index_spec.js
index 7c269d59dc6..6f1a14078c1 100644
--- a/spec/frontend/google_tag_manager/index_spec.js
+++ b/spec/frontend/google_tag_manager/index_spec.js
@@ -1,4 +1,5 @@
import { merge } from 'lodash';
+import { v4 as uuidv4 } from 'uuid';
import {
trackFreeTrialAccountSubmissions,
trackNewRegistrations,
@@ -9,11 +10,13 @@ import {
trackSaasTrialProjectImport,
trackSaasTrialGetStarted,
trackCheckout,
+ trackTransaction,
} from '~/google_tag_manager';
import { setHTMLFixture } from 'helpers/fixtures';
import { logError } from '~/lib/logger';
jest.mock('~/lib/logger');
+jest.mock('uuid');
describe('~/google_tag_manager/index', () => {
let spy;
@@ -217,28 +220,29 @@ describe('~/google_tag_manager/index', () => {
trackCheckout('2c92a00d76f0d5060176f2fb0a5029ff', 1);
- expect(spy).toHaveBeenCalledTimes(2);
- expect(spy).toHaveBeenCalledWith({ ecommerce: null });
- expect(spy).toHaveBeenCalledWith({
- event: 'EECCheckout',
- currencyCode: 'USD',
- ecommerce: {
- checkout: {
- actionField: { step: 1 },
- products: [
- {
- brand: 'GitLab',
- category: 'DevOps',
- id: '0002',
- name: 'Premium',
- price: 228,
- quantity: 1,
- variant: 'SaaS',
- },
- ],
+ expect(spy.mock.calls.flatMap((x) => x)).toEqual([
+ { ecommerce: null },
+ {
+ event: 'EECCheckout',
+ currencyCode: 'USD',
+ ecommerce: {
+ checkout: {
+ actionField: { step: 1 },
+ products: [
+ {
+ brand: 'GitLab',
+ category: 'DevOps',
+ id: '0002',
+ name: 'Premium',
+ price: 228,
+ quantity: 1,
+ variant: 'SaaS',
+ },
+ ],
+ },
},
},
- });
+ ]);
});
it('with selectedPlan: 2c92a0ff76f0d5250176f2f8c86f305a', () => {
@@ -307,6 +311,82 @@ describe('~/google_tag_manager/index', () => {
});
});
});
+
+ describe('when trackTransactions is invoked', () => {
+ describe.each([
+ {
+ selectedPlan: '2c92a00d76f0d5060176f2fb0a5029ff',
+ revenue: 228,
+ name: 'Premium',
+ id: '0002',
+ },
+ {
+ selectedPlan: '2c92a0ff76f0d5250176f2f8c86f305a',
+ revenue: 1188,
+ name: 'Ultimate',
+ id: '0001',
+ },
+ ])('with %o', (planObject) => {
+ it('invokes pushes a new event that references the selected plan', () => {
+ const { selectedPlan, revenue, name, id } = planObject;
+
+ expect(spy).not.toHaveBeenCalled();
+ uuidv4.mockImplementationOnce(() => '123');
+
+ const transactionDetails = {
+ paymentOption: 'visa',
+ revenue,
+ tax: 10,
+ selectedPlan,
+ quantity: 1,
+ };
+
+ trackTransaction(transactionDetails);
+
+ expect(spy.mock.calls.flatMap((x) => x)).toEqual([
+ { ecommerce: null },
+ {
+ event: 'EECtransactionSuccess',
+ currencyCode: 'USD',
+ ecommerce: {
+ purchase: {
+ actionField: {
+ id: '123',
+ affiliation: 'GitLab',
+ option: 'visa',
+ revenue,
+ tax: 10,
+ },
+ products: [
+ {
+ brand: 'GitLab',
+ category: 'DevOps',
+ id,
+ name,
+ price: revenue,
+ quantity: 1,
+ variant: 'SaaS',
+ },
+ ],
+ },
+ },
+ },
+ ]);
+ });
+ });
+ });
+
+ describe('when trackTransaction is invoked', () => {
+ describe('with an invalid plan object', () => {
+ it('does not get called', () => {
+ expect(spy).not.toHaveBeenCalled();
+
+ trackTransaction({ selectedPlan: 'notAplan' });
+
+ expect(spy).not.toHaveBeenCalled();
+ });
+ });
+ });
});
describe.each([