Chart.js/test/scale.time.tests.js

196 lines
5.7 KiB
JavaScript
Raw Normal View History

2015-09-27 15:38:11 +02:00
// Time scale tests
describe('Time scale tests', function() {
2015-10-17 05:14:07 +02:00
it('Should load moment.js as a dependency', function() {
expect(window.moment).not.toBe(undefined);
});
2015-09-27 15:38:11 +02:00
it('Should register the constructor with the scale service', function() {
var Constructor = Chart.scaleService.getScaleConstructor('time');
expect(Constructor).not.toBe(undefined);
expect(typeof Constructor).toBe('function');
});
it('Should have the correct default config', function() {
var defaultConfig = Chart.scaleService.getScaleDefaults('time');
expect(defaultConfig).toEqual({
display: true,
gridLines: {
color: "rgba(0, 0, 0, 0.1)",
drawOnChartArea: true,
drawTicks: true,
lineWidth: 1,
offsetGridLines: false,
show: true,
zeroLineColor: "rgba(0,0,0,0.25)",
zeroLineWidth: 1,
},
position: "bottom",
scaleLabel: {
fontColor: '#666',
fontFamily: 'Helvetica Neue',
fontSize: 12,
fontStyle: 'normal',
labelString: '',
show: false,
},
ticks: {
beginAtZero: false,
fontColor: "#666",
fontFamily: "Helvetica Neue",
fontSize: 12,
fontStyle: "normal",
maxRotation: 90,
minRotation: 20,
mirror: false,
padding: 10,
reverse: false,
show: true,
2015-10-19 01:48:57 +02:00
callback: defaultConfig.ticks.callback, // make this nicer, then check explicitly below
2015-09-27 15:38:11 +02:00
},
time: {
format: false,
unit: false,
round: false,
displayFormat: false,
}
});
2015-10-19 01:48:57 +02:00
// Is this actually a function
expect(defaultConfig.ticks.callback).toEqual(jasmine.any(Function));
2015-09-27 15:38:11 +02:00
});
2015-10-17 05:14:07 +02:00
it('should build ticks using days', function() {
2015-09-27 15:38:11 +02:00
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
};
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
},
2015-09-27 15:38:11 +02:00
id: scaleID
});
//scale.buildTicks();
scale.update(400, 50);
// Counts down because the lines are drawn top to bottom
expect(scale.ticks).toEqual(['Jan 1, 2015', 'Jan 2, 2015', 'Jan 3, 2015', 'Jan 4, 2015', 'Jan 5, 2015', 'Jan 6, 2015', 'Jan 7, 2015', 'Jan 8, 2015', 'Jan 9, 2015', 'Jan 10, 2015', 'Jan 11, 2015']);
});
2015-10-17 05:14:07 +02:00
it('should build ticks using the config unit', function() {
2015-09-27 15:38:11 +02:00
var scaleID = 'myScale';
var mockData = {
labels: ["2015-01-01T20:00:00", "2015-01-02T21:00:00"], // days
};
var mockContext = window.createMockContext();
var config = Chart.scaleService.getScaleDefaults('time');
config.time.unit = 'hour';
var Constructor = Chart.scaleService.getScaleConstructor('time');
var scale = new Constructor({
ctx: mockContext,
options: config, // use default config for scale
chart: {
data: mockData
},
2015-09-27 15:38:11 +02:00
id: scaleID
});
//scale.buildTicks();
scale.update(400, 50);
expect(scale.ticks).toEqual(['Jan 1, 8PM', 'Jan 1, 9PM', 'Jan 1, 10PM', 'Jan 1, 11PM', 'Jan 2, 12AM', 'Jan 2, 1AM', 'Jan 2, 2AM', 'Jan 2, 3AM', 'Jan 2, 4AM', 'Jan 2, 5AM', 'Jan 2, 6AM', 'Jan 2, 7AM', 'Jan 2, 8AM', 'Jan 2, 9AM', 'Jan 2, 10AM', 'Jan 2, 11AM', 'Jan 2, 12PM', 'Jan 2, 1PM', 'Jan 2, 2PM', 'Jan 2, 3PM', 'Jan 2, 4PM', 'Jan 2, 5PM', 'Jan 2, 6PM', 'Jan 2, 7PM', 'Jan 2, 8PM', 'Jan 2, 9PM']);
});
2015-10-17 05:14:07 +02:00
it('should build ticks using the config diff', function() {
2015-09-27 15:38:11 +02:00
var scaleID = 'myScale';
var mockData = {
labels: ["2015-01-01T20:00:00", "2015-02-02T21:00:00", "2015-02-21T01:00:00"], // days
};
var mockContext = window.createMockContext();
var config = Chart.scaleService.getScaleDefaults('time');
config.time.unit = 'week';
config.time.round = 'week';
var Constructor = Chart.scaleService.getScaleConstructor('time');
var scale = new Constructor({
ctx: mockContext,
options: config, // use default config for scale
chart: {
data: mockData
},
2015-09-27 15:38:11 +02:00
id: scaleID
});
//scale.buildTicks();
scale.update(400, 50);
expect(scale.ticks).toEqual(['Dec 28, 2014', 'Jan 4, 2015', 'Jan 11, 2015', 'Jan 18, 2015', 'Jan 25, 2015', 'Feb 1, 2015', 'Feb 8, 2015', 'Feb 15, 2015']);
});
2015-10-17 05:14:07 +02:00
it('should get the correct pixel for a value', function() {
2015-09-27 15:38:11 +02:00
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: [],
}]
2015-09-27 15:38:11 +02:00
};
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
},
2015-09-27 15:38:11 +02:00
id: scaleID
});
//scale.buildTicks();
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.getPixelForValue('', 0, 0)).toBe(63);
expect(scale.getPixelForValue('', 6, 0)).toBe(342);
var verticalScaleConfig = Chart.scaleService.getScaleDefaults('time');
verticalScaleConfig.position = "left";
var verticalScale = new Constructor({
ctx: mockContext,
options: verticalScaleConfig,
chart: {
data: mockData
},
2015-09-27 15:38:11 +02:00
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(6);
expect(verticalScale.getPixelForValue('', 6, 0)).toBe(394);
});
2015-10-17 05:14:07 +02:00
});