mocking window.URL.createObjectURL to have tests working with blob URLs

This commit is contained in:
El RIDO 2019-06-15 08:56:47 +02:00
parent abd71413c3
commit 6cf52f4cf3
No known key found for this signature in database
GPG Key ID: 0F5C940A6BD81F92
1 changed files with 15 additions and 3 deletions

View File

@ -11,13 +11,13 @@ describe('AttachmentViewer', function () {
jsc.property( jsc.property(
'displays & hides data as requested', 'displays & hides data as requested',
common.jscMimeTypes(), common.jscMimeTypes(),
jsc.nearray(common.jscBase64String()),
'string', 'string',
'string', 'string',
'string', 'string',
function (mimeType, base64, filename, prefix, postfix) { 'string',
function (mimeType, rawdata, filename, prefix, postfix) {
var clean = jsdom(), var clean = jsdom(),
data = 'data:' + mimeType + ';base64,' + base64.join(''), data = 'data:' + mimeType + ';base64,' + btoa(rawdata),
previewSupported = ( previewSupported = (
mimeType.substring(0, 6) === 'image/' || mimeType.substring(0, 6) === 'image/' ||
mimeType.substring(0, 6) === 'audio/' || mimeType.substring(0, 6) === 'audio/' ||
@ -34,6 +34,16 @@ describe('AttachmentViewer', function () {
'Download attachment</a></div><div id="attachmentPrevie' + 'Download attachment</a></div><div id="attachmentPrevie' +
'w" class="hidden"></div>' 'w" class="hidden"></div>'
); );
// mock createObjectURL for jsDOM
if (typeof window.URL.createObjectURL === 'undefined') {
Object.defineProperty(
window.URL,
'createObjectURL',
{value: function(blob) {
return 'blob:' + location.origin + '/1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed';
}}
)
}
$.PrivateBin.AttachmentViewer.init(); $.PrivateBin.AttachmentViewer.init();
results.push( results.push(
!$.PrivateBin.AttachmentViewer.hasAttachment() && !$.PrivateBin.AttachmentViewer.hasAttachment() &&
@ -45,6 +55,8 @@ describe('AttachmentViewer', function () {
} else { } else {
$.PrivateBin.AttachmentViewer.setAttachment(data); $.PrivateBin.AttachmentViewer.setAttachment(data);
} }
// beyond this point we will get the blob URL instead of the data
data = window.URL.createObjectURL(data);
var attachment = $.PrivateBin.AttachmentViewer.getAttachment(); var attachment = $.PrivateBin.AttachmentViewer.getAttachment();
results.push( results.push(
$.PrivateBin.AttachmentViewer.hasAttachment() && $.PrivateBin.AttachmentViewer.hasAttachment() &&