]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Rewrite unit test waitForResize helper (#4566)
authorSimon Brunel <simonbrunel@users.noreply.github.com>
Wed, 26 Jul 2017 11:33:45 +0000 (13:33 +0200)
committerGitHub <noreply@github.com>
Wed, 26 Jul 2017 11:33:45 +0000 (13:33 +0200)
The original implementation tries to intercept events from the chart internal iframe, which ones failing on Chrome 60. Checking internals doesn't seem the best approach, instead we could consider that a chart has been resized after the resize method has been called and processed. So let's hook `Chart.resize` and callback once it's done.

.travis.yml
test/.eslintrc
test/jasmine.index.js
test/jasmine.utils.js
test/specs/core.controller.tests.js
test/specs/platform.dom.tests.js

index 40e5b442b0538fc4abfdc8d181e041e2ee919edd..862d8b0445a41f3124e2d762ab63e2497accaa75 100644 (file)
@@ -22,13 +22,8 @@ sudo: required
 dist: trusty
 
 addons:
+  chrome: stable
   firefox: latest
-  apt:
-    sources:
-      - google-chrome
-    packages:
-      - google-chrome-stable
-
 
 # IMPORTANT: scripts require GITHUB_AUTH_TOKEN and GITHUB_AUTH_EMAIL environment variables
 # IMPORTANT: scripts has to be set executables in the Git repository (error 127)
index 5a281785c87a9da4381a8a171e4de8d5fad140c9..8e8f899bffd634a781dc6b6fa7423d8c51ca279c 100644 (file)
@@ -5,6 +5,7 @@ globals:
   acquireChart: true
   Chart: true
   moment: true
+  waitForResize: true
 
 # http://eslint.org/docs/rules/
 rules:
index 55c587ab0a246c5d608b210384c3f23c443176c6..10e2e617704f589219bf46a5d77863eeeeddc282 100644 (file)
@@ -24,6 +24,7 @@ var utils = require('./jasmine.utils');
 
        window.acquireChart = acquireChart;
        window.releaseChart = releaseChart;
+       window.waitForResize = utils.waitForResize;
        window.createMockContext = createMockContext;
 
        // some style initialization to limit differences between browsers across different plateforms.
index bb3f6445caba7889d1d101bc2eb736eb1b600322..473edfde9dc2cd949da52fec96088e048849698e 100644 (file)
@@ -149,10 +149,20 @@ function specsFromFixtures(path) {
        };
 }
 
+function waitForResize(chart, callback) {
+       var override = chart.resize;
+       chart.resize = function() {
+               chart.resize = override;
+               override.apply(this, arguments);
+               callback();
+       };
+}
+
 module.exports = {
        injectCSS: injectCSS,
        createCanvas: createCanvas,
        acquireChart: acquireChart,
        releaseChart: releaseChart,
-       specsFromFixtures: specsFromFixtures
+       specsFromFixtures: specsFromFixtures,
+       waitForResize: waitForResize
 };
index c2038ac248d98566f36b911e4047072fdc59f5e7..4c6e61858651c7295e51b9fccd38b1b00810833f 100644 (file)
@@ -1,18 +1,5 @@
 describe('Chart', function() {
 
-       function waitForResize(chart, callback) {
-               var resizer = chart.canvas.parentNode._chartjs.resizer;
-               var content = resizer.contentWindow || resizer;
-               var state = content.document.readyState || 'complete';
-               var handler = function() {
-                       Chart.helpers.removeEvent(content, 'load', handler);
-                       Chart.helpers.removeEvent(content, 'resize', handler);
-                       setTimeout(callback, 50);
-               };
-
-               Chart.helpers.addEvent(content, state !== 'complete' ? 'load' : 'resize', handler);
-       }
-
        // https://github.com/chartjs/Chart.js/issues/2481
        // See global.deprecations.tests.js for backward compatibility
        it('should be defined and prototype of chart instances', function() {
index 97806e613ecdf1ef1b33ddaaab0c8b6b9c0d64eb..4358b9b3521801745f0f240cde04244508651189 100644 (file)
@@ -1,18 +1,5 @@
 describe('Platform.dom', function() {
 
-       function waitForResize(chart, callback) {
-               var resizer = chart.canvas.parentNode._chartjs.resizer;
-               var content = resizer.contentWindow || resizer;
-               var state = content.document.readyState || 'complete';
-               var handler = function() {
-                       Chart.helpers.removeEvent(content, 'load', handler);
-                       Chart.helpers.removeEvent(content, 'resize', handler);
-                       setTimeout(callback, 50);
-               };
-
-               Chart.helpers.addEvent(content, state !== 'complete' ? 'load' : 'resize', handler);
-       }
-
        describe('context acquisition', function() {
                var canvasId = 'chartjs-canvas';