@segment/analytics-browser-actions-google-analytics-4 1.33.0 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/addPaymentInfo/generated-types.d.ts +1 -0
- package/dist/cjs/addPaymentInfo/index.js +4 -2
- package/dist/cjs/addPaymentInfo/index.js.map +1 -1
- package/dist/cjs/addToCart/generated-types.d.ts +1 -0
- package/dist/cjs/addToCart/index.js +4 -2
- package/dist/cjs/addToCart/index.js.map +1 -1
- package/dist/cjs/addToWishlist/generated-types.d.ts +1 -0
- package/dist/cjs/addToWishlist/index.js +4 -2
- package/dist/cjs/addToWishlist/index.js.map +1 -1
- package/dist/cjs/beginCheckout/generated-types.d.ts +1 -0
- package/dist/cjs/beginCheckout/index.js +4 -2
- package/dist/cjs/beginCheckout/index.js.map +1 -1
- package/dist/cjs/customEvent/generated-types.d.ts +1 -0
- package/dist/cjs/customEvent/index.js +4 -2
- package/dist/cjs/customEvent/index.js.map +1 -1
- package/dist/cjs/ga4-properties.d.ts +1 -0
- package/dist/cjs/ga4-properties.js +7 -1
- package/dist/cjs/ga4-properties.js.map +1 -1
- package/dist/cjs/generateLead/generated-types.d.ts +1 -0
- package/dist/cjs/generateLead/index.js +4 -2
- package/dist/cjs/generateLead/index.js.map +1 -1
- package/dist/cjs/login/generated-types.d.ts +1 -0
- package/dist/cjs/login/index.js +4 -2
- package/dist/cjs/login/index.js.map +1 -1
- package/dist/cjs/purchase/generated-types.d.ts +1 -0
- package/dist/cjs/purchase/index.js +4 -2
- package/dist/cjs/purchase/index.js.map +1 -1
- package/dist/cjs/refund/generated-types.d.ts +1 -0
- package/dist/cjs/refund/index.js +4 -2
- package/dist/cjs/refund/index.js.map +1 -1
- package/dist/cjs/removeFromCart/generated-types.d.ts +1 -0
- package/dist/cjs/removeFromCart/index.js +4 -2
- package/dist/cjs/removeFromCart/index.js.map +1 -1
- package/dist/cjs/search/generated-types.d.ts +1 -0
- package/dist/cjs/search/index.js +4 -2
- package/dist/cjs/search/index.js.map +1 -1
- package/dist/cjs/selectItem/generated-types.d.ts +1 -0
- package/dist/cjs/selectItem/index.js +4 -2
- package/dist/cjs/selectItem/index.js.map +1 -1
- package/dist/cjs/selectPromotion/generated-types.d.ts +1 -0
- package/dist/cjs/selectPromotion/index.js +4 -2
- package/dist/cjs/selectPromotion/index.js.map +1 -1
- package/dist/cjs/signUp/generated-types.d.ts +1 -0
- package/dist/cjs/signUp/index.js +4 -2
- package/dist/cjs/signUp/index.js.map +1 -1
- package/dist/cjs/viewCart/generated-types.d.ts +1 -0
- package/dist/cjs/viewCart/index.js +4 -2
- package/dist/cjs/viewCart/index.js.map +1 -1
- package/dist/cjs/viewItem/generated-types.d.ts +1 -0
- package/dist/cjs/viewItem/index.js +4 -2
- package/dist/cjs/viewItem/index.js.map +1 -1
- package/dist/cjs/viewItemList/generated-types.d.ts +1 -0
- package/dist/cjs/viewItemList/index.js +4 -2
- package/dist/cjs/viewItemList/index.js.map +1 -1
- package/dist/cjs/viewPromotion/generated-types.d.ts +1 -0
- package/dist/cjs/viewPromotion/index.js +4 -2
- package/dist/cjs/viewPromotion/index.js.map +1 -1
- package/dist/esm/addPaymentInfo/generated-types.d.ts +1 -0
- package/dist/esm/addPaymentInfo/index.js +5 -3
- package/dist/esm/addPaymentInfo/index.js.map +1 -1
- package/dist/esm/addToCart/generated-types.d.ts +1 -0
- package/dist/esm/addToCart/index.js +5 -3
- package/dist/esm/addToCart/index.js.map +1 -1
- package/dist/esm/addToWishlist/generated-types.d.ts +1 -0
- package/dist/esm/addToWishlist/index.js +5 -3
- package/dist/esm/addToWishlist/index.js.map +1 -1
- package/dist/esm/beginCheckout/generated-types.d.ts +1 -0
- package/dist/esm/beginCheckout/index.js +5 -3
- package/dist/esm/beginCheckout/index.js.map +1 -1
- package/dist/esm/customEvent/generated-types.d.ts +1 -0
- package/dist/esm/customEvent/index.js +5 -3
- package/dist/esm/customEvent/index.js.map +1 -1
- package/dist/esm/ga4-properties.d.ts +1 -0
- package/dist/esm/ga4-properties.js +6 -0
- package/dist/esm/ga4-properties.js.map +1 -1
- package/dist/esm/generateLead/generated-types.d.ts +1 -0
- package/dist/esm/generateLead/index.js +5 -3
- package/dist/esm/generateLead/index.js.map +1 -1
- package/dist/esm/login/generated-types.d.ts +1 -0
- package/dist/esm/login/index.js +5 -3
- package/dist/esm/login/index.js.map +1 -1
- package/dist/esm/purchase/generated-types.d.ts +1 -0
- package/dist/esm/purchase/index.js +5 -3
- package/dist/esm/purchase/index.js.map +1 -1
- package/dist/esm/refund/generated-types.d.ts +1 -0
- package/dist/esm/refund/index.js +5 -3
- package/dist/esm/refund/index.js.map +1 -1
- package/dist/esm/removeFromCart/generated-types.d.ts +1 -0
- package/dist/esm/removeFromCart/index.js +5 -3
- package/dist/esm/removeFromCart/index.js.map +1 -1
- package/dist/esm/search/generated-types.d.ts +1 -0
- package/dist/esm/search/index.js +5 -3
- package/dist/esm/search/index.js.map +1 -1
- package/dist/esm/selectItem/generated-types.d.ts +1 -0
- package/dist/esm/selectItem/index.js +5 -3
- package/dist/esm/selectItem/index.js.map +1 -1
- package/dist/esm/selectPromotion/generated-types.d.ts +1 -0
- package/dist/esm/selectPromotion/index.js +5 -3
- package/dist/esm/selectPromotion/index.js.map +1 -1
- package/dist/esm/signUp/generated-types.d.ts +1 -0
- package/dist/esm/signUp/index.js +5 -3
- package/dist/esm/signUp/index.js.map +1 -1
- package/dist/esm/viewCart/generated-types.d.ts +1 -0
- package/dist/esm/viewCart/index.js +5 -3
- package/dist/esm/viewCart/index.js.map +1 -1
- package/dist/esm/viewItem/generated-types.d.ts +1 -0
- package/dist/esm/viewItem/index.js +5 -3
- package/dist/esm/viewItem/index.js.map +1 -1
- package/dist/esm/viewItemList/generated-types.d.ts +1 -0
- package/dist/esm/viewItemList/index.js +5 -3
- package/dist/esm/viewItemList/index.js.map +1 -1
- package/dist/esm/viewPromotion/generated-types.d.ts +1 -0
- package/dist/esm/viewPromotion/index.js +5 -3
- package/dist/esm/viewPromotion/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/__tests__/addPaymentInfo.test.ts +74 -2
- package/src/__tests__/addToCart.test.ts +67 -2
- package/src/__tests__/addToWishlist.test.ts +68 -2
- package/src/__tests__/beginCheckout.test.ts +72 -2
- package/src/__tests__/customEvent.test.ts +62 -2
- package/src/__tests__/generateLead.test.ts +50 -2
- package/src/__tests__/login.test.ts +47 -2
- package/src/__tests__/purchase.test.ts +71 -2
- package/src/__tests__/refund.test.ts +70 -2
- package/src/__tests__/removeFromCart.test.ts +69 -2
- package/src/__tests__/search.test.ts +48 -2
- package/src/__tests__/selectItem.test.ts +69 -2
- package/src/__tests__/selectPromotion.test.ts +81 -2
- package/src/__tests__/signUp.test.ts +42 -2
- package/src/__tests__/viewCart.test.ts +69 -2
- package/src/__tests__/viewItem.test.ts +68 -2
- package/src/__tests__/viewItemList.test.ts +70 -2
- package/src/__tests__/viewPromotion.test.ts +80 -2
- package/src/addPaymentInfo/generated-types.ts +4 -0
- package/src/addPaymentInfo/index.ts +6 -3
- package/src/addToCart/generated-types.ts +4 -0
- package/src/addToCart/index.ts +5 -3
- package/src/addToWishlist/generated-types.ts +4 -0
- package/src/addToWishlist/index.ts +5 -3
- package/src/beginCheckout/generated-types.ts +4 -0
- package/src/beginCheckout/index.ts +14 -3
- package/src/customEvent/generated-types.ts +4 -0
- package/src/customEvent/index.ts +5 -3
- package/src/ga4-properties.ts +7 -0
- package/src/generateLead/generated-types.ts +4 -0
- package/src/generateLead/index.ts +5 -3
- package/src/login/generated-types.ts +4 -0
- package/src/login/index.ts +5 -3
- package/src/purchase/generated-types.ts +4 -0
- package/src/purchase/index.ts +6 -3
- package/src/refund/generated-types.ts +4 -0
- package/src/refund/index.ts +6 -3
- package/src/removeFromCart/generated-types.ts +4 -0
- package/src/removeFromCart/index.ts +5 -3
- package/src/search/generated-types.ts +4 -0
- package/src/search/index.ts +5 -3
- package/src/selectItem/generated-types.ts +4 -0
- package/src/selectItem/index.ts +6 -3
- package/src/selectPromotion/generated-types.ts +4 -0
- package/src/selectPromotion/index.ts +6 -3
- package/src/signUp/generated-types.ts +4 -0
- package/src/signUp/index.ts +5 -3
- package/src/viewCart/generated-types.ts +4 -0
- package/src/viewCart/index.ts +5 -3
- package/src/viewItem/generated-types.ts +4 -0
- package/src/viewItem/index.ts +5 -3
- package/src/viewItemList/generated-types.ts +4 -0
- package/src/viewItemList/index.ts +13 -3
- package/src/viewPromotion/generated-types.ts +4 -0
- package/src/viewPromotion/index.ts +6 -3
|
@@ -15,6 +15,9 @@ const subscriptions: Subscription[] = [
|
|
|
15
15
|
value: {
|
|
16
16
|
'@path': '$.properties.value'
|
|
17
17
|
},
|
|
18
|
+
send_to: {
|
|
19
|
+
'@path': '$.properties.send_to'
|
|
20
|
+
},
|
|
18
21
|
coupon: {
|
|
19
22
|
'@path': '$.properties.coupon'
|
|
20
23
|
},
|
|
@@ -67,7 +70,71 @@ describe('GoogleAnalytics4Web.refund', () => {
|
|
|
67
70
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
68
71
|
})
|
|
69
72
|
|
|
70
|
-
test('GA4 Refund Event', async () => {
|
|
73
|
+
test('GA4 Refund Event when send to is false', async () => {
|
|
74
|
+
const context = new Context({
|
|
75
|
+
event: 'Refund',
|
|
76
|
+
type: 'track',
|
|
77
|
+
properties: {
|
|
78
|
+
currency: 'USD',
|
|
79
|
+
value: 10,
|
|
80
|
+
transaction_id: 12321,
|
|
81
|
+
send_to: false,
|
|
82
|
+
products: [
|
|
83
|
+
{
|
|
84
|
+
product_id: '12345',
|
|
85
|
+
name: 'Monopoly: 3rd Edition',
|
|
86
|
+
currency: 'USD'
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
await refundEvent.track?.(context)
|
|
92
|
+
|
|
93
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
94
|
+
expect.anything(),
|
|
95
|
+
expect.stringContaining('refund'),
|
|
96
|
+
expect.objectContaining({
|
|
97
|
+
currency: 'USD',
|
|
98
|
+
transaction_id: 12321,
|
|
99
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
100
|
+
value: 10,
|
|
101
|
+
send_to: 'default'
|
|
102
|
+
})
|
|
103
|
+
)
|
|
104
|
+
})
|
|
105
|
+
test('GA4 Refund Event when send to is true', async () => {
|
|
106
|
+
const context = new Context({
|
|
107
|
+
event: 'Refund',
|
|
108
|
+
type: 'track',
|
|
109
|
+
properties: {
|
|
110
|
+
currency: 'USD',
|
|
111
|
+
value: 10,
|
|
112
|
+
transaction_id: 12321,
|
|
113
|
+
send_to: true,
|
|
114
|
+
products: [
|
|
115
|
+
{
|
|
116
|
+
product_id: '12345',
|
|
117
|
+
name: 'Monopoly: 3rd Edition',
|
|
118
|
+
currency: 'USD'
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
await refundEvent.track?.(context)
|
|
124
|
+
|
|
125
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
126
|
+
expect.anything(),
|
|
127
|
+
expect.stringContaining('refund'),
|
|
128
|
+
expect.objectContaining({
|
|
129
|
+
currency: 'USD',
|
|
130
|
+
transaction_id: 12321,
|
|
131
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
132
|
+
value: 10,
|
|
133
|
+
send_to: settings.measurementID
|
|
134
|
+
})
|
|
135
|
+
)
|
|
136
|
+
})
|
|
137
|
+
test('GA4 Refund Event when send to is undefined', async () => {
|
|
71
138
|
const context = new Context({
|
|
72
139
|
event: 'Refund',
|
|
73
140
|
type: 'track',
|
|
@@ -93,7 +160,8 @@ describe('GoogleAnalytics4Web.refund', () => {
|
|
|
93
160
|
currency: 'USD',
|
|
94
161
|
transaction_id: 12321,
|
|
95
162
|
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
96
|
-
value: 10
|
|
163
|
+
value: 10,
|
|
164
|
+
send_to: 'default'
|
|
97
165
|
})
|
|
98
166
|
)
|
|
99
167
|
})
|
|
@@ -18,6 +18,9 @@ const subscriptions: Subscription[] = [
|
|
|
18
18
|
coupon: {
|
|
19
19
|
'@path': '$.properties.coupon'
|
|
20
20
|
},
|
|
21
|
+
send_to: {
|
|
22
|
+
'@path': '$.properties.send_to'
|
|
23
|
+
},
|
|
21
24
|
items: [
|
|
22
25
|
{
|
|
23
26
|
item_name: {
|
|
@@ -64,13 +67,45 @@ describe('GoogleAnalytics4Web.removeFromCart', () => {
|
|
|
64
67
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
65
68
|
})
|
|
66
69
|
|
|
67
|
-
test('GA4 removeFromCart Event', async () => {
|
|
70
|
+
test('GA4 removeFromCart Event when send to is false', async () => {
|
|
71
|
+
const context = new Context({
|
|
72
|
+
event: 'Remove from Cart',
|
|
73
|
+
type: 'track',
|
|
74
|
+
properties: {
|
|
75
|
+
currency: 'USD',
|
|
76
|
+
value: 10,
|
|
77
|
+
send_to: false,
|
|
78
|
+
products: [
|
|
79
|
+
{
|
|
80
|
+
product_id: '12345',
|
|
81
|
+
name: 'Monopoly: 3rd Edition',
|
|
82
|
+
currency: 'USD'
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
await removeFromCartEvent.track?.(context)
|
|
89
|
+
|
|
90
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
91
|
+
expect.anything(),
|
|
92
|
+
expect.stringContaining('remove_from_cart'),
|
|
93
|
+
expect.objectContaining({
|
|
94
|
+
currency: 'USD',
|
|
95
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
96
|
+
value: 10,
|
|
97
|
+
send_to: 'default'
|
|
98
|
+
})
|
|
99
|
+
)
|
|
100
|
+
})
|
|
101
|
+
test('GA4 removeFromCart Event when send to is true', async () => {
|
|
68
102
|
const context = new Context({
|
|
69
103
|
event: 'Remove from Cart',
|
|
70
104
|
type: 'track',
|
|
71
105
|
properties: {
|
|
72
106
|
currency: 'USD',
|
|
73
107
|
value: 10,
|
|
108
|
+
send_to: true,
|
|
74
109
|
products: [
|
|
75
110
|
{
|
|
76
111
|
product_id: '12345',
|
|
@@ -89,7 +124,39 @@ describe('GoogleAnalytics4Web.removeFromCart', () => {
|
|
|
89
124
|
expect.objectContaining({
|
|
90
125
|
currency: 'USD',
|
|
91
126
|
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
92
|
-
value: 10
|
|
127
|
+
value: 10,
|
|
128
|
+
send_to: settings.measurementID
|
|
129
|
+
})
|
|
130
|
+
)
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
test('GA4 removeFromCart Event when send to is undefined', async () => {
|
|
134
|
+
const context = new Context({
|
|
135
|
+
event: 'Remove from Cart',
|
|
136
|
+
type: 'track',
|
|
137
|
+
properties: {
|
|
138
|
+
currency: 'USD',
|
|
139
|
+
value: 10,
|
|
140
|
+
products: [
|
|
141
|
+
{
|
|
142
|
+
product_id: '12345',
|
|
143
|
+
name: 'Monopoly: 3rd Edition',
|
|
144
|
+
currency: 'USD'
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
await removeFromCartEvent.track?.(context)
|
|
151
|
+
|
|
152
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
153
|
+
expect.anything(),
|
|
154
|
+
expect.stringContaining('remove_from_cart'),
|
|
155
|
+
expect.objectContaining({
|
|
156
|
+
currency: 'USD',
|
|
157
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
158
|
+
value: 10,
|
|
159
|
+
send_to: 'default'
|
|
93
160
|
})
|
|
94
161
|
)
|
|
95
162
|
})
|
|
@@ -11,6 +11,9 @@ const subscriptions: Subscription[] = [
|
|
|
11
11
|
mapping: {
|
|
12
12
|
search_term: {
|
|
13
13
|
'@path': '$.properties.search_term'
|
|
14
|
+
},
|
|
15
|
+
send_to: {
|
|
16
|
+
'@path': '$.properties.send_to'
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
}
|
|
@@ -39,12 +42,34 @@ describe('GoogleAnalytics4Web.search', () => {
|
|
|
39
42
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
40
43
|
})
|
|
41
44
|
|
|
42
|
-
test('GA4 search Event', async () => {
|
|
45
|
+
test('GA4 search Event when send to is false', async () => {
|
|
43
46
|
const context = new Context({
|
|
44
47
|
event: 'search',
|
|
45
48
|
type: 'track',
|
|
46
49
|
properties: {
|
|
47
|
-
search_term: 'Monopoly: 3rd Edition'
|
|
50
|
+
search_term: 'Monopoly: 3rd Edition',
|
|
51
|
+
send_to: false
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
await searchEvent.track?.(context)
|
|
56
|
+
|
|
57
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
58
|
+
expect.anything(),
|
|
59
|
+
expect.stringContaining('search'),
|
|
60
|
+
expect.objectContaining({
|
|
61
|
+
search_term: 'Monopoly: 3rd Edition',
|
|
62
|
+
send_to: 'default'
|
|
63
|
+
})
|
|
64
|
+
)
|
|
65
|
+
})
|
|
66
|
+
test('GA4 search Event when send to is true', async () => {
|
|
67
|
+
const context = new Context({
|
|
68
|
+
event: 'search',
|
|
69
|
+
type: 'track',
|
|
70
|
+
properties: {
|
|
71
|
+
search_term: 'Monopoly: 3rd Edition',
|
|
72
|
+
send_to: true
|
|
48
73
|
}
|
|
49
74
|
})
|
|
50
75
|
|
|
@@ -54,7 +79,28 @@ describe('GoogleAnalytics4Web.search', () => {
|
|
|
54
79
|
expect.anything(),
|
|
55
80
|
expect.stringContaining('search'),
|
|
56
81
|
expect.objectContaining({
|
|
82
|
+
search_term: 'Monopoly: 3rd Edition',
|
|
83
|
+
send_to: settings.measurementID
|
|
84
|
+
})
|
|
85
|
+
)
|
|
86
|
+
})
|
|
87
|
+
test('GA4 search Event when send to is undefined', async () => {
|
|
88
|
+
const context = new Context({
|
|
89
|
+
event: 'search',
|
|
90
|
+
type: 'track',
|
|
91
|
+
properties: {
|
|
57
92
|
search_term: 'Monopoly: 3rd Edition'
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
await searchEvent.track?.(context)
|
|
97
|
+
|
|
98
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
99
|
+
expect.anything(),
|
|
100
|
+
expect.stringContaining('search'),
|
|
101
|
+
expect.objectContaining({
|
|
102
|
+
search_term: 'Monopoly: 3rd Edition',
|
|
103
|
+
send_to: 'default'
|
|
58
104
|
})
|
|
59
105
|
)
|
|
60
106
|
})
|
|
@@ -15,6 +15,9 @@ const subscriptions: Subscription[] = [
|
|
|
15
15
|
item_list_name: {
|
|
16
16
|
'@path': '$.properties.item_list_name'
|
|
17
17
|
},
|
|
18
|
+
send_to: {
|
|
19
|
+
'@path': '$.properties.send_to'
|
|
20
|
+
},
|
|
18
21
|
items: [
|
|
19
22
|
{
|
|
20
23
|
item_name: {
|
|
@@ -61,7 +64,70 @@ describe('GoogleAnalytics4Web.selectItem', () => {
|
|
|
61
64
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
62
65
|
})
|
|
63
66
|
|
|
64
|
-
test('GA4 selectItem Event', async () => {
|
|
67
|
+
test('GA4 selectItem Event when send to is false', async () => {
|
|
68
|
+
const context = new Context({
|
|
69
|
+
event: 'Select Item',
|
|
70
|
+
type: 'track',
|
|
71
|
+
properties: {
|
|
72
|
+
item_list_id: 12321,
|
|
73
|
+
item_list_name: 'Monopoly: 3rd Edition',
|
|
74
|
+
send_to: false,
|
|
75
|
+
products: [
|
|
76
|
+
{
|
|
77
|
+
product_id: '12345',
|
|
78
|
+
name: 'Monopoly: 3rd Edition',
|
|
79
|
+
currency: 'USD'
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
await selectItemEvent.track?.(context)
|
|
86
|
+
|
|
87
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
88
|
+
expect.anything(),
|
|
89
|
+
expect.stringContaining('select_item'),
|
|
90
|
+
expect.objectContaining({
|
|
91
|
+
item_list_id: 12321,
|
|
92
|
+
item_list_name: 'Monopoly: 3rd Edition',
|
|
93
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
94
|
+
send_to: 'default'
|
|
95
|
+
})
|
|
96
|
+
)
|
|
97
|
+
})
|
|
98
|
+
test('GA4 selectItem Event when send to is true', async () => {
|
|
99
|
+
const context = new Context({
|
|
100
|
+
event: 'Select Item',
|
|
101
|
+
type: 'track',
|
|
102
|
+
properties: {
|
|
103
|
+
item_list_id: 12321,
|
|
104
|
+
item_list_name: 'Monopoly: 3rd Edition',
|
|
105
|
+
send_to: true,
|
|
106
|
+
products: [
|
|
107
|
+
{
|
|
108
|
+
product_id: '12345',
|
|
109
|
+
name: 'Monopoly: 3rd Edition',
|
|
110
|
+
currency: 'USD'
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
await selectItemEvent.track?.(context)
|
|
117
|
+
|
|
118
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
119
|
+
expect.anything(),
|
|
120
|
+
expect.stringContaining('select_item'),
|
|
121
|
+
expect.objectContaining({
|
|
122
|
+
item_list_id: 12321,
|
|
123
|
+
item_list_name: 'Monopoly: 3rd Edition',
|
|
124
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
125
|
+
send_to: settings.measurementID
|
|
126
|
+
})
|
|
127
|
+
)
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
test('GA4 selectItem Event when send to is undefined', async () => {
|
|
65
131
|
const context = new Context({
|
|
66
132
|
event: 'Select Item',
|
|
67
133
|
type: 'track',
|
|
@@ -86,7 +152,8 @@ describe('GoogleAnalytics4Web.selectItem', () => {
|
|
|
86
152
|
expect.objectContaining({
|
|
87
153
|
item_list_id: 12321,
|
|
88
154
|
item_list_name: 'Monopoly: 3rd Edition',
|
|
89
|
-
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }]
|
|
155
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
156
|
+
send_to: 'default'
|
|
90
157
|
})
|
|
91
158
|
)
|
|
92
159
|
})
|
|
@@ -24,6 +24,9 @@ const subscriptions: Subscription[] = [
|
|
|
24
24
|
promotion_name: {
|
|
25
25
|
'@path': '$.properties.promotion_name'
|
|
26
26
|
},
|
|
27
|
+
send_to: {
|
|
28
|
+
'@path': '$.properties.send_to'
|
|
29
|
+
},
|
|
27
30
|
items: [
|
|
28
31
|
{
|
|
29
32
|
item_name: {
|
|
@@ -70,7 +73,82 @@ describe('GoogleAnalytics4Web.selectPromotion', () => {
|
|
|
70
73
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
71
74
|
})
|
|
72
75
|
|
|
73
|
-
test('GA4 selectPromotion Event', async () => {
|
|
76
|
+
test('GA4 selectPromotion Event when send to is false', async () => {
|
|
77
|
+
const context = new Context({
|
|
78
|
+
event: 'Select Promotion',
|
|
79
|
+
type: 'track',
|
|
80
|
+
properties: {
|
|
81
|
+
creative_name: 'summer_banner2',
|
|
82
|
+
creative_slot: 'featured_app_1',
|
|
83
|
+
location_id: 'ChIJIQBpAG2ahYAR_6128GcTUEo',
|
|
84
|
+
promotion_id: 'P_12345',
|
|
85
|
+
promotion_name: 'Summer Sale',
|
|
86
|
+
send_to: false,
|
|
87
|
+
products: [
|
|
88
|
+
{
|
|
89
|
+
product_id: '12345',
|
|
90
|
+
name: 'Monopoly: 3rd Edition',
|
|
91
|
+
currency: 'USD'
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
await selectPromotionEvent.track?.(context)
|
|
98
|
+
|
|
99
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
100
|
+
expect.anything(),
|
|
101
|
+
expect.stringContaining('select_promotion'),
|
|
102
|
+
expect.objectContaining({
|
|
103
|
+
creative_name: 'summer_banner2',
|
|
104
|
+
creative_slot: 'featured_app_1',
|
|
105
|
+
location_id: 'ChIJIQBpAG2ahYAR_6128GcTUEo',
|
|
106
|
+
promotion_id: 'P_12345',
|
|
107
|
+
promotion_name: 'Summer Sale',
|
|
108
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
109
|
+
send_to: 'default'
|
|
110
|
+
})
|
|
111
|
+
)
|
|
112
|
+
})
|
|
113
|
+
test('GA4 selectPromotion Event when send to is true', async () => {
|
|
114
|
+
const context = new Context({
|
|
115
|
+
event: 'Select Promotion',
|
|
116
|
+
type: 'track',
|
|
117
|
+
properties: {
|
|
118
|
+
creative_name: 'summer_banner2',
|
|
119
|
+
creative_slot: 'featured_app_1',
|
|
120
|
+
location_id: 'ChIJIQBpAG2ahYAR_6128GcTUEo',
|
|
121
|
+
promotion_id: 'P_12345',
|
|
122
|
+
promotion_name: 'Summer Sale',
|
|
123
|
+
send_to: true,
|
|
124
|
+
products: [
|
|
125
|
+
{
|
|
126
|
+
product_id: '12345',
|
|
127
|
+
name: 'Monopoly: 3rd Edition',
|
|
128
|
+
currency: 'USD'
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
})
|
|
133
|
+
|
|
134
|
+
await selectPromotionEvent.track?.(context)
|
|
135
|
+
|
|
136
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
137
|
+
expect.anything(),
|
|
138
|
+
expect.stringContaining('select_promotion'),
|
|
139
|
+
expect.objectContaining({
|
|
140
|
+
creative_name: 'summer_banner2',
|
|
141
|
+
creative_slot: 'featured_app_1',
|
|
142
|
+
location_id: 'ChIJIQBpAG2ahYAR_6128GcTUEo',
|
|
143
|
+
promotion_id: 'P_12345',
|
|
144
|
+
promotion_name: 'Summer Sale',
|
|
145
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
146
|
+
send_to: settings.measurementID
|
|
147
|
+
})
|
|
148
|
+
)
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
test('GA4 selectPromotion Event when send to is undefined', async () => {
|
|
74
152
|
const context = new Context({
|
|
75
153
|
event: 'Select Promotion',
|
|
76
154
|
type: 'track',
|
|
@@ -101,7 +179,8 @@ describe('GoogleAnalytics4Web.selectPromotion', () => {
|
|
|
101
179
|
location_id: 'ChIJIQBpAG2ahYAR_6128GcTUEo',
|
|
102
180
|
promotion_id: 'P_12345',
|
|
103
181
|
promotion_name: 'Summer Sale',
|
|
104
|
-
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }]
|
|
182
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
183
|
+
send_to: 'default'
|
|
105
184
|
})
|
|
106
185
|
)
|
|
107
186
|
})
|
|
@@ -11,6 +11,9 @@ const subscriptions: Subscription[] = [
|
|
|
11
11
|
mapping: {
|
|
12
12
|
method: {
|
|
13
13
|
'@path': '$.properties.method'
|
|
14
|
+
},
|
|
15
|
+
send_to: {
|
|
16
|
+
'@path': '$.properties.send_to'
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
}
|
|
@@ -39,7 +42,44 @@ describe('GoogleAnalytics4Web.signUp', () => {
|
|
|
39
42
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
40
43
|
})
|
|
41
44
|
|
|
42
|
-
test('GA4 signUp Event', async () => {
|
|
45
|
+
test('GA4 signUp Event when send to is false', async () => {
|
|
46
|
+
const context = new Context({
|
|
47
|
+
event: 'signUp',
|
|
48
|
+
type: 'track',
|
|
49
|
+
properties: {
|
|
50
|
+
method: 'Google',
|
|
51
|
+
send_to: false
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
await signUpEvent.track?.(context)
|
|
56
|
+
|
|
57
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
58
|
+
expect.anything(),
|
|
59
|
+
expect.stringContaining('sign_up'),
|
|
60
|
+
expect.objectContaining({ method: 'Google', send_to: 'default' })
|
|
61
|
+
)
|
|
62
|
+
})
|
|
63
|
+
test('GA4 signUp Event when send to is true', async () => {
|
|
64
|
+
const context = new Context({
|
|
65
|
+
event: 'signUp',
|
|
66
|
+
type: 'track',
|
|
67
|
+
properties: {
|
|
68
|
+
method: 'Google',
|
|
69
|
+
send_to: true
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
await signUpEvent.track?.(context)
|
|
74
|
+
|
|
75
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
76
|
+
expect.anything(),
|
|
77
|
+
expect.stringContaining('sign_up'),
|
|
78
|
+
expect.objectContaining({ method: 'Google', send_to: settings.measurementID })
|
|
79
|
+
)
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
test('GA4 signUp Event when send to is undefined', async () => {
|
|
43
83
|
const context = new Context({
|
|
44
84
|
event: 'signUp',
|
|
45
85
|
type: 'track',
|
|
@@ -53,7 +93,7 @@ describe('GoogleAnalytics4Web.signUp', () => {
|
|
|
53
93
|
expect(mockGA4).toHaveBeenCalledWith(
|
|
54
94
|
expect.anything(),
|
|
55
95
|
expect.stringContaining('sign_up'),
|
|
56
|
-
expect.objectContaining({ method: 'Google' })
|
|
96
|
+
expect.objectContaining({ method: 'Google', send_to: 'default' })
|
|
57
97
|
)
|
|
58
98
|
})
|
|
59
99
|
})
|
|
@@ -15,6 +15,9 @@ const subscriptions: Subscription[] = [
|
|
|
15
15
|
value: {
|
|
16
16
|
'@path': '$.properties.value'
|
|
17
17
|
},
|
|
18
|
+
send_to: {
|
|
19
|
+
'@path': '$.properties.send_to'
|
|
20
|
+
},
|
|
18
21
|
items: [
|
|
19
22
|
{
|
|
20
23
|
item_name: {
|
|
@@ -61,13 +64,45 @@ describe('GoogleAnalytics4Web.viewCart', () => {
|
|
|
61
64
|
await trackEventPlugin.load(Context.system(), {} as Analytics)
|
|
62
65
|
})
|
|
63
66
|
|
|
64
|
-
test('GA4 viewCart Event', async () => {
|
|
67
|
+
test('GA4 viewCart Event when send to is false', async () => {
|
|
68
|
+
const context = new Context({
|
|
69
|
+
event: 'View Cart',
|
|
70
|
+
type: 'track',
|
|
71
|
+
properties: {
|
|
72
|
+
currency: 'USD',
|
|
73
|
+
value: 10,
|
|
74
|
+
send_to: false,
|
|
75
|
+
products: [
|
|
76
|
+
{
|
|
77
|
+
product_id: '12345',
|
|
78
|
+
name: 'Monopoly: 3rd Edition',
|
|
79
|
+
currency: 'USD'
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
await viewCartEvent.track?.(context)
|
|
86
|
+
|
|
87
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
88
|
+
expect.anything(),
|
|
89
|
+
expect.stringContaining('view_cart'),
|
|
90
|
+
expect.objectContaining({
|
|
91
|
+
currency: 'USD',
|
|
92
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
93
|
+
value: 10,
|
|
94
|
+
send_to: 'default'
|
|
95
|
+
})
|
|
96
|
+
)
|
|
97
|
+
})
|
|
98
|
+
test('GA4 viewCart Event when send to is true', async () => {
|
|
65
99
|
const context = new Context({
|
|
66
100
|
event: 'View Cart',
|
|
67
101
|
type: 'track',
|
|
68
102
|
properties: {
|
|
69
103
|
currency: 'USD',
|
|
70
104
|
value: 10,
|
|
105
|
+
send_to: true,
|
|
71
106
|
products: [
|
|
72
107
|
{
|
|
73
108
|
product_id: '12345',
|
|
@@ -86,7 +121,39 @@ describe('GoogleAnalytics4Web.viewCart', () => {
|
|
|
86
121
|
expect.objectContaining({
|
|
87
122
|
currency: 'USD',
|
|
88
123
|
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
89
|
-
value: 10
|
|
124
|
+
value: 10,
|
|
125
|
+
send_to: settings.measurementID
|
|
126
|
+
})
|
|
127
|
+
)
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
test('GA4 viewCart Event when send to is false', async () => {
|
|
131
|
+
const context = new Context({
|
|
132
|
+
event: 'View Cart',
|
|
133
|
+
type: 'track',
|
|
134
|
+
properties: {
|
|
135
|
+
currency: 'USD',
|
|
136
|
+
value: 10,
|
|
137
|
+
products: [
|
|
138
|
+
{
|
|
139
|
+
product_id: '12345',
|
|
140
|
+
name: 'Monopoly: 3rd Edition',
|
|
141
|
+
currency: 'USD'
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
await viewCartEvent.track?.(context)
|
|
148
|
+
|
|
149
|
+
expect(mockGA4).toHaveBeenCalledWith(
|
|
150
|
+
expect.anything(),
|
|
151
|
+
expect.stringContaining('view_cart'),
|
|
152
|
+
expect.objectContaining({
|
|
153
|
+
currency: 'USD',
|
|
154
|
+
items: [{ currency: 'USD', item_id: '12345', item_name: 'Monopoly: 3rd Edition' }],
|
|
155
|
+
value: 10,
|
|
156
|
+
send_to: 'default'
|
|
90
157
|
})
|
|
91
158
|
)
|
|
92
159
|
})
|