Skip to content

Commit 899a761

Browse files
authored
Merge branch 'master' into support-systemjs
2 parents c127251 + ed9e11b commit 899a761

File tree

3 files changed

+132
-51
lines changed

3 files changed

+132
-51
lines changed

integrations/walkme/lib/index.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var WalkMe = module.exports = integration('WalkMe')
1919
.option('trackWalkMeEvents', false)
2020
.option('loadWalkMeInIframe', false)
2121
.option('integrityHash', '')
22+
.option('customDirecotry', 'users')
2223
.tag('<script async="true" src="{{ url }}" crossorigin="" integrity="{{ hash }}">')
2324

2425
/**
@@ -37,9 +38,9 @@ WalkMe.prototype.initialize = function() {
3738
window.walkme_load_in_iframe = true;
3839
}
3940

40-
var env = "\/" + (this.options.environment && this.options.environment.toLowerCase());
41+
var env = "/"+(this.options.environment && this.options.environment.toLowerCase());
4142

42-
if (!env || env == "\/" || env == "\/production") {
43+
if (env === "/" || env === "/production") {
4344
env = "";
4445
}
4546

@@ -67,14 +68,23 @@ WalkMe.prototype.initialize = function() {
6768
sriSuffix = 'private_';
6869
}
6970

70-
var url = 'https://cdn.walkme.com/users/' + walkMeSystemId + env + '/walkme_' + sriSuffix + walkMeSystemId + '_https.js';
71+
var bucket = (this.options.customDirecotry) ? this.options.customDirecotry : 'users';
72+
var url = 'https://cdn.walkme.com/' + bucket + '/' + walkMeSystemId + env + '/walkme_' + sriSuffix + walkMeSystemId + '_https.js';
7173

72-
this.load({
74+
var payload = {
7375
url,
7476
hash: this.options.integrityHash
75-
});
77+
};
78+
79+
this.initializeTester(payload);
80+
this.load(payload);
7681
};
7782

83+
/**
84+
* Used for testing initialization
85+
*/
86+
WalkMe.prototype.initializeTester = function () {};
87+
7888
/**
7989
* Has the WalkMe library been loaded yet?
8090
*

integrations/walkme/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@walkme/analytics.js-integration-walkme",
33
"description": "The WalkMe analytics.js integration.",
4-
"version": "1.1.0",
4+
"version": "1.2.1",
55
"keywords": [
66
"analytics.js",
77
"analytics.js-integration",

integrations/walkme/test/index.test.js

Lines changed: 116 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ var sandbox = require('@segment/clear-env');
66
var tester = require('@segment/analytics.js-integration-tester');
77
var fmt = require('@segment/fmt');
88
var Walkme = require('../lib');
9+
var sinon = require('sinon');
10+
var assert = require('assert');
911

1012
describe('WalkMe', function() {
1113
var analytics;
@@ -16,7 +18,8 @@ describe('WalkMe', function() {
1618
environment: 'test',
1719
trackWalkMeEvents: false,
1820
loadWalkMeInIframe: true,
19-
integrityHash: ''
21+
integrityHash: '',
22+
customDirecotry: '',
2023
};
2124

2225
beforeEach(function() {
@@ -46,6 +49,7 @@ describe('WalkMe', function() {
4649
.option('trackWalkMeEvents', false)
4750
.option('loadWalkMeInIframe', false)
4851
.option('integrityHash', '')
52+
.option('customDirecotry', 'users')
4953
);
5054
});
5155

@@ -85,63 +89,130 @@ describe('WalkMe', function() {
8589
})
8690

8791
it('should load walkme test lib', function(done) {
88-
try {
89-
var tag = fmt(
90-
'<script src="https://cdn.walkme.com/users/%s/%s/walkme_%s_https.js" >',
91-
options.walkMeSystemId.toLowerCase(),
92-
'test',
93-
options.walkMeSystemId.toLowerCase()
92+
var spy = sinon.spy(walkme, 'initializeTester');
93+
var url = fmt(
94+
'https://cdn.walkme.com/users/%s/%s/walkme_%s_https.js',
95+
options.walkMeSystemId.toLowerCase(),
96+
'test',
97+
options.walkMeSystemId.toLowerCase()
98+
);
99+
100+
window.walkme_ready = function() {
101+
analytics.assert(
102+
!!window.WalkMeAPI,
103+
'Expected WalkMeAPI to be present on the page'
94104
);
95105

96-
window.walkme_ready = function() {
97-
analytics.assert(
98-
!!window.WalkMeAPI,
99-
'Expected WalkMeAPI to be present on the page'
100-
);
106+
var payload = spy.args[0][0];
101107

108+
try {
109+
assert.equal(url, payload.url);
102110
done();
103-
};
111+
}
112+
catch(e) {
113+
done(e);
114+
}
115+
};
104116

105-
analytics.load(walkme, function() {
106-
analytics.loaded(tag);
107-
analytics.identify('UserId');
108-
});
109-
} catch (e) {
110-
done(e);
111-
}
117+
analytics.load(walkme, function() {
118+
analytics.identify('UserId');
119+
});
120+
}).timeout(10000);
121+
122+
it('should load walkme Prod Environment', function(done) {
123+
var spy = sinon.spy(walkme, 'initializeTester');
124+
125+
var tag = fmt(
126+
'<script src="https://cdn.walkme.com/users/%s/walkme_%s_https.js" >',
127+
options.walkMeSystemId.toLowerCase(),
128+
options.walkMeSystemId.toLowerCase()
129+
);
130+
131+
walkme.options.environment = 'production';
132+
133+
window.walkme_ready = function() {
134+
try {
135+
assert.equal(!!window.WalkMeAPI, true);
136+
137+
var payload = spy.args[0][0];
138+
assert.equal(tag, '<script src="'+payload.url+'" >')
139+
done();
140+
}
141+
catch(e) {
142+
done(e);
143+
}
144+
145+
};
146+
147+
analytics.load(walkme, function() {
148+
analytics.loaded(tag);
149+
});
112150
}).timeout(10000);
113151

114152
it('should load walkme SRI', function(done) {
115-
try {
116-
var walkMeSystemId = '42b2849a0ca54749bd485bcbd5bcc64e';
117-
var integrityHash = 'sha256-FjbibNOUzdIz+mtyFRU7NHj1G5tPgzOuJNCkRyDmXr8=';
118-
119-
var tag = fmt(
120-
'<script src="https://cdn.walkme.com/users/%s/%s/walkme_private_%s_https.js" crossorigin="" integrity="%s" >',
121-
walkMeSystemId,
122-
'test',
123-
walkMeSystemId,
124-
integrityHash
125-
);
153+
var spy = sinon.spy(walkme, 'initializeTester');
126154

127-
window.walkme_ready = function() {
128-
analytics.assert(
129-
!!window.WalkMeAPI,
130-
'Expected WalkMeAPI to be present on the page'
131-
);
155+
var walkMeSystemId = '42b2849a0ca54749bd485bcbd5bcc64e';
156+
var integrityHash = 'sha256-FjbibNOUzdIz+mtyFRU7NHj1G5tPgzOuJNCkRyDmXr8=';
157+
158+
var url = fmt(
159+
'https://cdn.walkme.com/users/%s/%s/walkme_private_%s_https.js',
160+
walkMeSystemId,
161+
'test',
162+
walkMeSystemId,
163+
);
164+
165+
window.walkme_ready = function() {
166+
try {
167+
assert.equal(!!window.WalkMeAPI, true);
132168

169+
var payload = spy.args[0][0];
170+
171+
assert.equal(url, payload.url);
133172
done();
134-
};
173+
} catch (e) {
174+
done(e);
175+
}
176+
};
135177

136-
walkme.options.walkMeSystemId = '42b2849a0ca54749bd485bcbd5bcc64e';
137-
walkme.options.integrityHash = 'sha256-FjbibNOUzdIz+mtyFRU7NHj1G5tPgzOuJNCkRyDmXr8=';
178+
walkme.options.walkMeSystemId = walkMeSystemId;
179+
walkme.options.integrityHash = integrityHash;
138180

139-
analytics.load(walkme, function() {
140-
analytics.loaded(tag);
141-
});
142-
} catch (e) {
143-
done(e);
144-
}
181+
analytics.load(walkme, function() { });
182+
}).timeout(10000);
183+
184+
it('should setup bucket', function(done) {
185+
var walkMeSystemId = '42b2849a0ca54749bd485bcbd5bcc64e';
186+
var integrityHash = 'sha256-FjbibNOUzdIz+mtyFRU7NHj1G5tPgzOuJNCkRyDmXr8=';
187+
var bucket = 'users';
188+
189+
var spy = sinon.spy(walkme, 'initializeTester');
190+
var url = fmt(
191+
'https://cdn.walkme.com/%s/%s/%s/walkme_private_%s_https.js',
192+
bucket,
193+
walkMeSystemId,
194+
'test',
195+
walkMeSystemId
196+
);
197+
198+
window.walkme_ready = function() {
199+
var payload = spy.args[0][0];
200+
201+
try {
202+
assert.equal(!!window.WalkMeAPI, true);
203+
assert.equal(url, payload.url);
204+
done();
205+
}
206+
catch(e) {
207+
done(e);
208+
}
209+
};
210+
211+
walkme.options.walkMeSystemId = walkMeSystemId;
212+
walkme.options.integrityHash = integrityHash;
213+
walkme.options.customDirecotry = bucket;
214+
215+
analytics.load(walkme);
145216
}).timeout(10000);
146217
});
147218

0 commit comments

Comments
 (0)