Skip to content

Commit 7d7202b

Browse files
committed
test: Added tests for dynamic options in showReportDialog
1 parent 84ed55c commit 7d7202b

File tree

2 files changed

+56
-16
lines changed

2 files changed

+56
-16
lines changed

packages/raven-js/src/raven.js

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -877,11 +877,14 @@ Raven.prototype = {
877877
)
878878
return;
879879

880-
options = Object.assign({
881-
eventId: this.lastEventId(),
882-
dsn: this._dsn,
883-
user: this._globalContext.user,
884-
}, options || {});
880+
options = Object.assign(
881+
{
882+
eventId: this.lastEventId(),
883+
dsn: this._dsn,
884+
user: this._globalContext.user || {}
885+
},
886+
options
887+
);
885888

886889
if (!options.eventId) {
887890
throw new RavenConfigError('Missing eventId');
@@ -892,24 +895,22 @@ Raven.prototype = {
892895
}
893896

894897
var encode = encodeURIComponent;
895-
var qs = '?';
898+
var encodedOptions = [];
899+
896900
for (var key in options) {
897-
if (key !== 'user') {
898-
qs += encode(key) + '=' + encode(options[key]) + '&';
901+
if (key === 'user') {
902+
var user = options.user;
903+
if (user.name) encodedOptions.push('name=' + encode(user.name));
904+
if (user.email) encodedOptions.push('email=' + encode(user.email));
905+
} else {
906+
encodedOptions.push(encode(key) + '=' + encode(options[key]));
899907
}
900908
}
901-
902-
var user = options.user;
903-
if (user) {
904-
if (user.name) qs += '&name=' + encode(user.name);
905-
if (user.email) qs += '&email=' + encode(user.email);
906-
}
907-
908909
var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));
909910

910911
var script = _document.createElement('script');
911912
script.async = true;
912-
script.src = globalServer + '/api/embed/error-page/' + qs;
913+
script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');
913914
(_document.head || _document.body).appendChild(script);
914915
},
915916

packages/raven-js/test/raven.test.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3706,6 +3706,45 @@ describe('Raven (public API)', function() {
37063706
'http://example.com/api/embed/error-page/?eventId=abc123&dsn=http%3A%2F%2Fabc%40example.com%3A80%2F2&name=Average%20Normalperson%202&email=an2%40example.com'
37073707
);
37083708
});
3709+
3710+
it('should specify detailed query string for dialog customization', function() {
3711+
this.sinon.stub(Raven, '_makeRequest');
3712+
3713+
Raven.showReportDialog({
3714+
eventId: 'abc123',
3715+
dsn: SENTRY_DSN,
3716+
title: 'title',
3717+
subtitle: 'subtitle',
3718+
subtitle2: 'subtitle2',
3719+
labelName: 'labelName',
3720+
labelEmail: 'labelEmail',
3721+
labelComments: 'labelComments',
3722+
labelClose: 'labelClose',
3723+
labelSubmit: 'labelSubmit',
3724+
errorGeneric: 'errorGeneric',
3725+
errorFormEntry: 'errorFormEntry',
3726+
successMessage: 'successMessage',
3727+
});
3728+
3729+
var script = this.appendChildStub.getCall(0).args[0];
3730+
assert.equal(
3731+
script.src,
3732+
'http://example.com/api/embed/error-page/?eventId=abc123&dsn=http%3A%2F%2Fabc%40example.com%3A80%2F2&title=title&subtitle=subtitle&subtitle2=subtitle2&labelName=labelName&labelEmail=labelEmail&labelComments=labelComments&labelClose=labelClose&labelSubmit=labelSubmit&errorGeneric=errorGeneric&errorFormEntry=errorFormEntry&successMessage=successMessage'
3733+
);
3734+
3735+
this.appendChildStub.reset();
3736+
3737+
Raven.config(SENTRY_DSN)
3738+
.captureException(new Error('foo')) // generates lastEventId
3739+
.showReportDialog();
3740+
3741+
this.appendChildStub.getCall(0).args[0];
3742+
assert.equal(
3743+
script.src,
3744+
'http://example.com/api/embed/error-page/?eventId=abc123&dsn=http%3A%2F%2Fabc%40example.com%3A80%2F2&title=title&subtitle=subtitle&subtitle2=subtitle2&labelName=labelName&labelEmail=labelEmail&labelComments=labelComments&labelClose=labelClose&labelSubmit=labelSubmit&errorGeneric=errorGeneric&errorFormEntry=errorFormEntry&successMessage=successMessage'
3745+
);
3746+
});
3747+
37093748
});
37103749
});
37113750

0 commit comments

Comments
 (0)