Chart.js/test/jasmine.index.js
Simon Brunel c6bda02468 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.
2017-07-26 13:33:45 +02:00

57 lines
1.3 KiB
JavaScript

var Context = require('./jasmine.context');
var matchers = require('./jasmine.matchers');
var utils = require('./jasmine.utils');
(function() {
// Keep track of all acquired charts to automatically release them after each specs
var charts = {};
function acquireChart() {
var chart = utils.acquireChart.apply(utils, arguments);
charts[chart.id] = chart;
return chart;
}
function releaseChart(chart) {
utils.releaseChart.apply(utils, arguments);
delete charts[chart.id];
}
function createMockContext() {
return new Context();
}
window.acquireChart = acquireChart;
window.releaseChart = releaseChart;
window.waitForResize = utils.waitForResize;
window.createMockContext = createMockContext;
// some style initialization to limit differences between browsers across different plateforms.
utils.injectCSS(
'.chartjs-wrapper, .chartjs-wrapper canvas {' +
'border: 0;' +
'margin: 0;' +
'padding: 0;' +
'}' +
'.chartjs-wrapper {' +
'position: absolute' +
'}');
jasmine.specsFromFixtures = utils.specsFromFixtures;
beforeEach(function() {
jasmine.addMatchers(matchers);
});
afterEach(function() {
// Auto releasing acquired charts
Object.keys(charts).forEach(function(id) {
var chart = charts[id];
if (!(chart.$test || {}).persistent) {
releaseChart(chart);
}
});
});
}());