Rewrite unit test waitForResize helper (#4566)

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.
This commit is contained in:
Simon Brunel 2017-07-26 13:33:45 +02:00 committed by GitHub
parent 3aa7a20923
commit c6bda02468
6 changed files with 14 additions and 33 deletions

View 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)

View File

@ -5,6 +5,7 @@ globals:
acquireChart: true
Chart: true
moment: true
waitForResize: true
# http://eslint.org/docs/rules/
rules:

View 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.

View 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
};

View 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() {

View 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';