From 9fe9305992153e69f95340abd20a9d3658fc3da4 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Wed, 27 Apr 2016 21:50:31 -0400 Subject: [PATCH] Reenable time scale tests --- gulpfile.js | 2 +- test/mockContext.js | 18 +++ test/scale.time.tests.js | 305 ++++++++++++++++++--------------------- 3 files changed, 160 insertions(+), 165 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index dc04c10ea..cc1a8d03d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -48,7 +48,7 @@ var testFiles = [ '!./test/core.layoutService.tests.js', '!./test/defaultConfig.tests.js', '!./test/scale.radialLinear.tests.js', - '!./test/scale.time.tests.js' + //'!./test/scale.time.tests.js' ]; gulp.task('build', buildTask); diff --git a/test/mockContext.js b/test/mockContext.js index 14cd1eec9..3287232f5 100644 --- a/test/mockContext.js +++ b/test/mockContext.js @@ -141,9 +141,27 @@ } }; + function toEqualOneOf() { + return { + compare: function(actual, expecteds) { + var result = false; + for (var i = 0, l = expecteds.length; i < l; i++) { + if (actual === expecteds[i]) { + result = true; + break; + } + } + return { + pass: result + }; + } + }; + } + window.addDefaultMatchers = function(jasmine) { jasmine.addMatchers({ toBeCloseToPixel: toBeCloseToPixel, + toEqualOneOf: toEqualOneOf }); } diff --git a/test/scale.time.tests.js b/test/scale.time.tests.js index 6320c4782..abee86e94 100644 --- a/test/scale.time.tests.js +++ b/test/scale.time.tests.js @@ -1,25 +1,16 @@ // Time scale tests describe('Time scale tests', function() { + var chartInstance; beforeEach(function() { - jasmine.addMatchers({ - toEqualOneOf: function() { - return { - compare: function(actual, expecteds) { - var result = false; - for (var i = 0, l = expecteds.length; i < l; i++) { - if (actual === expecteds[i]) { - result = true; - break; - } - } - return { - pass: result - }; - } - }; - } - }); + window.addDefaultMatchers(jasmine); + }); + + afterEach(function() { + if (chartInstance) + { + releaseChart(chartInstance); + } }); it('Should load moment.js as a dependency', function() { @@ -146,86 +137,97 @@ describe('Time scale tests', function() { return moment('01/01/2015 12:00', 'DD/MM/YYYY HH:mm').add(days, 'd').toDate(); } - var scaleID = 'myScale'; - var mockData = { - datasets: [{ - data: [{ - x: newDateFromRef(0), - y: 1 - }, { - x: newDateFromRef(1), - y: 10 - }, { - x: newDateFromRef(2), - y: 0 - }, { - x: newDateFromRef(4), - y: 5 - }, { - x: newDateFromRef(6), - y: 77 - }, { - x: newDateFromRef(7), - y: 9 - }, { - x: newDateFromRef(9), - y: 5 - }] // days - }] - }; - - var mockContext = window.createMockContext(); - var Constructor = Chart.scaleService.getScaleConstructor('time'); - var scale = new Constructor({ - ctx: mockContext, - options: Chart.scaleService.getScaleDefaults('time'), // use default config for scale - chart: { - data: mockData + chartInstance = window.acquireChart({ + type: 'line', + data: { + datasets: [{ + xAxisID: 'xScale0', + yAxisID: 'yScale0', + data: [{ + x: newDateFromRef(0), + y: 1 + }, { + x: newDateFromRef(1), + y: 10 + }, { + x: newDateFromRef(2), + y: 0 + }, { + x: newDateFromRef(4), + y: 5 + }, { + x: newDateFromRef(6), + y: 77 + }, { + x: newDateFromRef(7), + y: 9 + }, { + x: newDateFromRef(9), + y: 5 + }] + }], }, - id: scaleID + options: { + scales: { + xAxes: [{ + id: 'xScale0', + type: 'time', + position: 'bottom' + }], + yAxes: [{ + id: 'yScale0', + type: 'linear' + }] + } + } }); - scale.update(400, 50); - // Counts down because the lines are drawn top to bottom - expect(scale.ticks).toEqual([ 'Dec 28, 2014', 'Jan 11, 2015' ]); + var xScale = chartInstance.scales.xScale0; + expect(xScale.ticks).toEqual([ 'Jan 1, 2015', 'Jan 3, 2015', 'Jan 5, 2015', 'Jan 7, 2015', 'Jan 9, 2015', 'Jan 11, 2015' ]); }); it('should allow custom time parsers', function() { - // Helper to build date objects - - - var scaleID = 'myScale'; - var mockData = { - datasets: [{ - data: [{ - x: 375068900, - y: 1 - }] - }] - }; - var verticalScaleConfig = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('time')); - verticalScaleConfig.time.unit = 'day'; - verticalScaleConfig.time.round = true; - verticalScaleConfig.time.parser = function customTimeParser(label) { - return moment.unix(label); - } - - var mockContext = window.createMockContext(); - var Constructor = Chart.scaleService.getScaleConstructor('time'); - var scale = new Constructor({ - ctx: mockContext, - options: verticalScaleConfig, - chart: { - data: mockData + chartInstance = window.acquireChart({ + type: 'line', + data: { + datasets: [{ + xAxisID: 'xScale0', + yAxisID: 'yScale0', + data: [{ + x: 375068900, + y: 1 + }] + }], }, - id: scaleID + options: { + scales: { + xAxes: [{ + id: 'xScale0', + type: 'time', + position: 'bottom', + time: { + unit: 'day', + round: true, + parser: function customTimeParser(label) { + return moment.unix(label); + } + } + }], + yAxes: [{ + id: 'yScale0', + type: 'linear' + }] + } + } }); - scale.update(400, 50); // Counts down because the lines are drawn top to bottom - expect(scale.ticks[0]).toEqualOneOf(['Nov 19, 1981', 'Nov 20, 1981']); // handle time zone changes - expect(scale.ticks[1]).toEqualOneOf(['Nov 19, 1981', 'Nov 20, 1981']); // handle time zone changes + var xScale = chartInstance.scales.xScale0; + + // Counts down because the lines are drawn top to bottom + expect(xScale.ticks[0]).toEqualOneOf(['Nov 19, 1981', 'Nov 20, 1981']); // handle time zone changes + expect(xScale.ticks[1]).toEqualOneOf(['Nov 19, 1981', 'Nov 20, 1981']); // handle time zone changes }); it('should build ticks using the config unit', function() { @@ -307,93 +309,68 @@ describe('Time scale tests', function() { }); it('should get the correct pixel for a value', function() { - var scaleID = 'myScale'; - - var mockData = { - labels: ["2015-01-01T20:00:00", "2015-01-02T21:00:00", "2015-01-03T22:00:00", "2015-01-05T23:00:00", "2015-01-07T03:00", "2015-01-08T10:00", "2015-01-10T12:00"], // days - datasets: [{ - data: [], - }] - }; - - var mockContext = window.createMockContext(); - var Constructor = Chart.scaleService.getScaleConstructor('time'); - var scale = new Constructor({ - ctx: mockContext, - options: Chart.scaleService.getScaleDefaults('time'), // use default config for scale - chart: { - data: mockData + chartInstance = window.acquireChart({ + type: 'line', + data: { + datasets: [{ + xAxisID: 'xScale0', + yAxisID: 'yScale0', + data: [] + }], + labels: ["2015-01-01T20:00:00", "2015-01-02T21:00:00", "2015-01-03T22:00:00", "2015-01-05T23:00:00", "2015-01-07T03:00", "2015-01-08T10:00", "2015-01-10T12:00"], // days }, - id: scaleID + options: { + scales: { + xAxes: [{ + id: 'xScale0', + type: 'time', + position: 'bottom' + }], + yAxes: [{ + id: 'yScale0', + type: 'linear', + position: 'left' + }] + } + } }); - scale.update(400, 50); - - expect(scale.width).toBe(400); - expect(scale.height).toBe(28); - scale.left = 0; - scale.right = 400; - scale.top = 10; - scale.bottom = 38; + var xScale = chartInstance.scales.xScale0; - expect(scale.getPixelForValue('', 0, 0)).toBe(148); - expect(scale.getPixelForValue('', 6, 0)).toBe(299); - - var verticalScaleConfig = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('time')); - verticalScaleConfig.position = "left"; - - var verticalScale = new Constructor({ - ctx: mockContext, - options: verticalScaleConfig, - chart: { - data: mockData - }, - id: scaleID - }); - verticalScale.update(50, 400); - expect(verticalScale.width).toBe(50); - expect(verticalScale.height).toBe(400); - verticalScale.top = 0; - verticalScale.left = 0; - verticalScale.right = 50; - verticalScale.bottom = 400; - - expect(verticalScale.getPixelForValue('', 0, 0)).toBe(126); - expect(verticalScale.getPixelForValue('', 6, 0)).toBe(340); + expect(xScale.getPixelForValue('', 0, 0)).toBeCloseToPixel(78); + expect(xScale.getPixelForValue('', 6, 0)).toBeCloseToPixel(466); }); it('should get the correct label for a data value', function() { - var scaleID = 'myScale'; - - var mockData = { - labels: ["2015-01-01T20:00:00", "2015-01-02T21:00:00", "2015-01-03T22:00:00", "2015-01-05T23:00:00", "2015-01-07T03:00", "2015-01-08T10:00", "2015-01-10T12:00"], // days - datasets: [{ - data: [] - }] - }; - - var mockContext = window.createMockContext(); - var Constructor = Chart.scaleService.getScaleConstructor('time'); - var scale = new Constructor({ - ctx: mockContext, - options: Chart.scaleService.getScaleDefaults('time'), // use default config for scale - chart: { - data: mockData + chartInstance = window.acquireChart({ + type: 'line', + data: { + datasets: [{ + xAxisID: 'xScale0', + yAxisID: 'yScale0', + data: [] + }], + labels: ["2015-01-01T20:00:00", "2015-01-02T21:00:00", "2015-01-03T22:00:00", "2015-01-05T23:00:00", "2015-01-07T03:00", "2015-01-08T10:00", "2015-01-10T12:00"], // days }, - id: scaleID + options: { + scales: { + xAxes: [{ + id: 'xScale0', + type: 'time', + position: 'bottom' + }], + yAxes: [{ + id: 'yScale0', + type: 'linear', + position: 'left' + }] + } + } }); - scale.update(400, 50); - - expect(scale.width).toBe(400); - expect(scale.height).toBe(28); - scale.left = 0; - scale.right = 400; - scale.top = 10; - scale.bottom = 38; - - expect(scale.getLabelForIndex(0, 0)).toBe('2015-01-01T20:00:00'); - expect(scale.getLabelForIndex(6, 0)).toBe('2015-01-10T12:00'); + var xScale = chartInstance.scales.xScale0; + expect(xScale.getLabelForIndex(0, 0)).toBe('2015-01-01T20:00:00'); + expect(xScale.getLabelForIndex(6, 0)).toBe('2015-01-10T12:00'); }); }); -- 2.47.3