From f41cea02299dc41dcc1f934d57430b564cf708ef Mon Sep 17 00:00:00 2001 From: Felix Hammerl Date: Fri, 1 Apr 2016 14:51:27 +0200 Subject: Run event test async with source passed to iframe via Blob URI --- web-ui/app/js/mixins/with_mail_sandbox.js | 58 ++++++++++++----------- web-ui/test/spec/mixins/with_mail_sandbox.spec.js | 30 ++++++++++-- 2 files changed, 57 insertions(+), 31 deletions(-) (limited to 'web-ui') diff --git a/web-ui/app/js/mixins/with_mail_sandbox.js b/web-ui/app/js/mixins/with_mail_sandbox.js index c292cb70..1a51840d 100644 --- a/web-ui/app/js/mixins/with_mail_sandbox.js +++ b/web-ui/app/js/mixins/with_mail_sandbox.js @@ -34,41 +34,43 @@ define( }); iframe.onload = function() { - // use iframe-resizer to dynamically adapt iframe size to its content - var config = { - resizedCallback: scaleToFit, - checkOrigin: false - }; - $iframe.iFrameResize(config); + if ($iframe.iFrameResize) { + // use iframe-resizer to dynamically adapt iframe size to its content + var config = { + resizedCallback: scaleToFit, + checkOrigin: false + }; + $iframe.iFrameResize(config); + } + + iframe.contentWindow.postMessage({ + html: content + }, '*'); // transform scale iframe to fit container width // necessary if iframe is wider than container function scaleToFit() { - var parentWidth = $iframe.parent().width(); - var w = $iframe.width(); - var scale = 'none'; + var parentWidth = $iframe.parent().width(); + var w = $iframe.width(); + var scale = 'none'; - // only scale html mails - if (mail && mail.htmlBody && (w > parentWidth)) { - scale = parentWidth / w; - scale = 'scale(' + scale + ',' + scale + ')'; - } + // only scale html mails + if (mail && mail.htmlBody && (w > parentWidth)) { + scale = parentWidth / w; + scale = 'scale(' + scale + ',' + scale + ')'; + } - $iframe.css({ - '-webkit-transform-origin': '0 0', - '-moz-transform-origin': '0 0', - '-ms-transform-origin': '0 0', - 'transform-origin': '0 0', - '-webkit-transform': scale, - '-moz-transform': scale, - '-ms-transform': scale, - 'transform': scale - }); + $iframe.css({ + '-webkit-transform-origin': '0 0', + '-moz-transform-origin': '0 0', + '-ms-transform-origin': '0 0', + 'transform-origin': '0 0', + '-webkit-transform': scale, + '-moz-transform': scale, + '-ms-transform': scale, + 'transform': scale + }); } - - iframe.contentWindow.postMessage({ - html: content - }, '*'); }; }; } diff --git a/web-ui/test/spec/mixins/with_mail_sandbox.spec.js b/web-ui/test/spec/mixins/with_mail_sandbox.spec.js index a1c2d624..daa8cc39 100644 --- a/web-ui/test/spec/mixins/with_mail_sandbox.spec.js +++ b/web-ui/test/spec/mixins/with_mail_sandbox.spec.js @@ -2,13 +2,37 @@ describeMixin('mixins/with_mail_sandbox', function() { 'use strict'; beforeEach(function() { - this.setupComponent(''); + this.setupComponent(''); + var iframe = document.querySelector('iframe'); + var template = ['', + '', + '', + '', + '', + '', + '', + '', + '', + ''].join(''); + iframe.src = URL.createObjectURL(new Blob([template], {type: "text/html"})); }); - it('should open reply container', function () { + it('should open reply container', function (done) { var showContainerEvent = spyOnEvent(document, Pixelated.events.ui.replyBox.showReplyContainer); this.component.showMailOnSandbox(Pixelated.testData().parsedMail.html); - expect(showContainerEvent).toHaveBeenTriggeredOn(document); + setTimeout(function() { + expect(showContainerEvent).toHaveBeenTriggeredOn(document); + done(); + }, 200); }); }); -- cgit v1.2.3