Skip to content

Commit 143ba7c

Browse files
committed
Address Sam feedback
1 parent be87e9f commit 143ba7c

File tree

4 files changed

+110
-100
lines changed

4 files changed

+110
-100
lines changed

.eslintrc.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
"indent": "off",
3030
// Contradicts closure/indent.
3131
// We use the hasOwn function to validate object properties.
32-
"guard-for-in": "off"
32+
"guard-for-in": "off",
33+
// Disable the following two so the expectation object can be returned
34+
// from custom expect functions
35+
"jasmine/expect-matcher": "off",
36+
"jasmine/new-line-before-expect": "off"
3337
}
3438
}

src/eventProcessor/GoogleAnalyticsEventProcessor.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,19 +121,23 @@ class GoogleAnalyticsEventProcessor {
121121
* @return {string}
122122
* @private
123123
*/
124-
buildRequestUrl() {
125-
const measurementIdQuery =
126-
this.measurementId_ ? `measurement_id=${this.measurementId_}` : '';
127-
const apiSecretQuery =
128-
this.apiSecret_ ? `api_secret=${this.apiSecret_}` : '';
129-
130-
if (measurementIdQuery && apiSecretQuery) {
131-
return `${this.measurementUrl_}?${measurementIdQuery}&${apiSecretQuery}`;
132-
} else if (measurementIdQuery || apiSecretQuery) {
133-
return `${this.measurementUrl_}?${measurementIdQuery}${apiSecretQuery}`;
134-
} else {
135-
return `${this.measurementUrl_}`;
124+
buildRequestUrl_() {
125+
const paramsArray = [];
126+
if (this.measurementId_) {
127+
paramsArray.push(
128+
`measurement_id=${encodeURIComponent(this.measurementId_)}`
129+
);
130+
}
131+
if (this.apiSecret_) {
132+
paramsArray.push(
133+
`api_secret=${encodeURIComponent(this.apiSecret_)}`
134+
);
135+
}
136+
if (paramsArray.length > 0) {
137+
const params = paramsArray.join('&');
138+
return `${this.measurementUrl_}?${params}`;
136139
}
140+
return this.measurementUrl_;
137141
}
138142

139143
/**

test/GoogleAnalyticsEventProcessor/buildRequestUrl_test.js

Lines changed: 0 additions & 87 deletions
This file was deleted.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
goog.module('measurementLibrary.eventProcessor.testing.GoogleAnalyticsEventProcessor.buildRequestUrl');
2+
goog.setTestOnly();
3+
4+
const GoogleAnalyticsEventProcessor = goog.require('measurementLibrary.eventProcessor.GoogleAnalyticsEventProcessor');
5+
6+
describe('The `buildRequestUrl` method ' +
7+
'of GoogleAnalyticsEventProcessor', () => {
8+
/**
9+
* Tests the `buildRequestUrl` function by passing in an API secret,
10+
* measurement ID, and measurement URL to construct the event processor
11+
* with and comparing the result of the function with the expected result.
12+
* @param {string} apiSecret
13+
* @param {string} measurementId
14+
* @param {string} measurementUrl
15+
* @return {string} expected
16+
*/
17+
function expectRequestUrl(apiSecret, measurementId, measurementUrl) {
18+
const eventProcessor = new GoogleAnalyticsEventProcessor({
19+
'api_secret': apiSecret,
20+
'measurement_id': measurementId,
21+
'measurement_url': measurementUrl,
22+
});
23+
24+
return expect(eventProcessor.buildRequestUrl_());
25+
}
26+
27+
it('creates the correct query string when using the default ' +
28+
'measurement url', () => {
29+
expectRequestUrl(
30+
/* apiSecret */ '123',
31+
/* measurementId */ '456',
32+
/* measurementUrl */ undefined)
33+
.toBe('https://www.google-analytics.com/mp/collect?' +
34+
'measurement_id=456&api_secret=123');
35+
36+
expectRequestUrl(
37+
/* apiSecret */ '',
38+
/* measurementId */ '456',
39+
/* measurementUrl */ undefined)
40+
.toBe('https://www.google-analytics.com/mp/collect?measurement_id=456');
41+
42+
expectRequestUrl(
43+
/* apiSecret */ '123',
44+
/* measurementId */ '',
45+
/* measurementUrl */ undefined)
46+
.toBe('https://www.google-analytics.com/mp/collect?api_secret=123');
47+
48+
expectRequestUrl(
49+
/* apiSecret */ '',
50+
/* measurementId */ '',
51+
/* measurementUrl */ undefined)
52+
.toBe('https://www.google-analytics.com/mp/collect');
53+
});
54+
55+
it('creates the correct query string when using an overriden ' +
56+
'measurement url', () => {
57+
expectRequestUrl(
58+
/* apiSecret */ '123',
59+
/* measurementId */ '456',
60+
/* measurementUrl */ 'https://test.com')
61+
.toBe('https://test.com?measurement_id=456&api_secret=123');
62+
63+
expectRequestUrl(
64+
/* apiSecret */ '',
65+
/* measurementId */ '456',
66+
/* measurementUrl */ 'https://test.com')
67+
.toBe('https://test.com?measurement_id=456');
68+
69+
expectRequestUrl(
70+
/* apiSecret */ '123',
71+
/* measurementId */ '',
72+
/* measurementUrl */ 'https://test.com')
73+
.toBe('https://test.com?api_secret=123');
74+
75+
expectRequestUrl(
76+
/* apiSecret */ '',
77+
/* measurementId */ '',
78+
/* measurementUrl */ 'https://test.com')
79+
.toBe('https://test.com');
80+
});
81+
82+
it('encodes query parameters', () => {
83+
expectRequestUrl(
84+
/* apiSecret */ '12 3',
85+
/* measurementId */ '45 6',
86+
/* measurementUrl */ 'https://test.com')
87+
.toBe('https://test.com?measurement_id=45%206&api_secret=12%203');
88+
});
89+
});

0 commit comments

Comments
 (0)