Start to clean up the linear scale tests

This commit is contained in:
Evert Timberg 2015-09-24 18:54:56 -04:00
parent f1b704a419
commit 2e2bbc9d52

View File

@ -10,16 +10,18 @@ describe('Linear Scale', function() {
var defaultConfig = Chart.scaleService.getScaleDefaults('linear'); var defaultConfig = Chart.scaleService.getScaleDefaults('linear');
expect(defaultConfig).toEqual({ expect(defaultConfig).toEqual({
display: true, display: true,
position: "left",
gridLines: { gridLines: {
show: true,
color: "rgba(0, 0, 0, 0.1)", color: "rgba(0, 0, 0, 0.1)",
lineWidth: 1,
drawOnChartArea: true, drawOnChartArea: true,
drawTicks: true, // draw ticks extending towards the label drawTicks: true, // draw ticks extending towards the label
zeroLineWidth: 1, lineWidth: 1,
offsetGridLines: false,
show: true,
zeroLineColor: "rgba(0,0,0,0.25)", zeroLineColor: "rgba(0,0,0,0.25)",
zeroLineWidth: 1,
}, },
position: "left",
scaleLabel: { scaleLabel: {
fontColor: '#666', fontColor: '#666',
fontFamily: 'Helvetica Neue', fontFamily: 'Helvetica Neue',
@ -28,18 +30,15 @@ describe('Linear Scale', function() {
labelString: '', labelString: '',
show: false, show: false,
}, },
reverse: false, ticks: {
beginAtZero: false, fontColor: "#666",
override: null, fontFamily: "Helvetica Neue",
labels: {
show: true,
mirror: false,
padding: 10,
template: "<%=value.toLocaleString()%>",
fontSize: 12, fontSize: 12,
fontStyle: "normal", fontStyle: "normal",
fontColor: "#666", maxRotation: 90,
fontFamily: "Helvetica Neue" minRotation: 20,
show: true,
template: "<%=value%>"
} }
}); });
}); });
@ -72,7 +71,11 @@ describe('Linear Scale', function() {
expect(scale.min).toBe(undefined); // not yet set expect(scale.min).toBe(undefined); // not yet set
expect(scale.max).toBe(undefined); expect(scale.max).toBe(undefined);
scale.calculateRange(); // Set arbitrary width and height for now
scale.width = 50;
scale.height = 400;
scale.buildTicks();
expect(scale.min).toBe(-100); expect(scale.min).toBe(-100);
expect(scale.max).toBe(150); expect(scale.max).toBe(150);
}); });
@ -109,7 +112,11 @@ describe('Linear Scale', function() {
id: scaleID id: scaleID
}); });
verticalScale.calculateRange(); // Set arbitrary width and height for now
verticalScale.width = 50;
verticalScale.height = 400;
verticalScale.buildTicks();
expect(verticalScale.min).toBe(0); expect(verticalScale.min).toBe(0);
expect(verticalScale.max).toBe(100); expect(verticalScale.max).toBe(100);
@ -122,9 +129,13 @@ describe('Linear Scale', function() {
id: scaleID, id: scaleID,
}); });
horizontalScale.calculateRange(); // Set arbitrary width and height for now
expect(horizontalScale.min).toBe(-10); horizontalScale.width = 400;
expect(horizontalScale.max).toBe(99); horizontalScale.height = 50;
horizontalScale.buildTicks();
expect(horizontalScale.min).toBe(-20);
expect(horizontalScale.max).toBe(100);
}); });
it('Should correctly determine the min and max data values when stacked mode is turned on', function() { it('Should correctly determine the min and max data values when stacked mode is turned on', function() {
@ -154,9 +165,13 @@ describe('Linear Scale', function() {
id: scaleID id: scaleID
}); });
scale.calculateRange(); // Set arbitrary width and height for now
expect(scale.min).toBe(-105); scale.width = 50;
expect(scale.max).toBe(160); scale.height = 400;
scale.buildTicks();
expect(scale.min).toBe(-150);
expect(scale.max).toBe(200);
}); });
it('Should ensure that the scale has a max and min that are not equal', function() { it('Should ensure that the scale has a max and min that are not equal', function() {
@ -175,52 +190,15 @@ describe('Linear Scale', function() {
id: scaleID id: scaleID
}); });
scale.calculateRange(); // Set arbitrary width and height for now
scale.width = 50;
scale.height = 400;
scale.buildTicks();
expect(scale.min).toBe(-1); expect(scale.min).toBe(-1);
expect(scale.max).toBe(1); expect(scale.max).toBe(1);
}); });
it('should forcibly include 0 in the range if the beginAtZero option is used', function() {
var scaleID = 'myScale';
var mockData = {
datasets: [{
yAxisID: scaleID,
data: [20, 30, 40, 50]
}]
};
var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear'));
var Constructor = Chart.scaleService.getScaleConstructor('linear');
var scale = new Constructor({
ctx: {},
options: config,
data: mockData,
id: scaleID
});
scale.calculateRange();
scale.generateTicks(400, 400);
expect(scale.ticks).toEqual([50, 45, 40, 35, 30, 25, 20]);
config.beginAtZero = true;
scale.calculateRange();
scale.generateTicks(400, 400);
expect(scale.ticks).toEqual([50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0]);
mockData.datasets[0].data = [-20, -30, -40, -50];
scale.calculateRange();
scale.generateTicks(400, 400);
expect(scale.ticks).toEqual([0, -5, -10, -15, -20, -25, -30, -35, -40, -45, -50]);
config.beginAtZero = false;
scale.calculateRange();
scale.generateTicks(400, 400);
expect(scale.ticks).toEqual([-20, -25, -30, -35, -40, -45, -50]);
});
it('Should generate tick marks', function() { it('Should generate tick marks', function() {
var scaleID = 'myScale'; var scaleID = 'myScale';
@ -255,78 +233,6 @@ describe('Linear Scale', function() {
expect(scale.end).toBe(80); expect(scale.end).toBe(80);
}); });
it('Should generate tick marks in the correct order in reversed mode', function() {
var scaleID = 'myScale';
var mockData = {
datasets: [{
yAxisID: scaleID,
data: [10, 5, 0, 25, 78]
}, ]
};
var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear'));
config.reverse = true;
var Constructor = Chart.scaleService.getScaleConstructor('linear');
var scale = new Constructor({
ctx: {},
options: config,
data: mockData,
id: scaleID
});
scale.calculateRange();
expect(scale.ticks).toBe(undefined); // not set
// Large enough to be unimportant
var maxWidth = 400;
var maxHeight = 400;
scale.generateTicks(maxWidth, maxHeight);
// Reverse mode makes this count up
expect(scale.ticks).toEqual([0, 10, 20, 30, 40, 50, 60, 70, 80]);
expect(scale.start).toBe(80);
expect(scale.end).toBe(0);
});
it('Should generate tick marks using the user supplied options', function() {
var scaleID = 'myScale';
var mockData = {
datasets: [{
yAxisID: scaleID,
data: [10, 5, 0, 25, 78]
}, ]
};
var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear'));
config.override = {
steps: 10,
start: 0,
stepWidth: 10
};
var Constructor = Chart.scaleService.getScaleConstructor('linear');
var scale = new Constructor({
ctx: {},
options: config,
data: mockData,
id: scaleID
});
scale.calculateRange();
// Large enough to be unimportant
var maxWidth = 400;
var maxHeight = 400;
scale.generateTicks(maxWidth, maxHeight);
expect(scale.ticks).toEqual([100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0]);
expect(scale.start).toBe(0);
expect(scale.end).toBe(100);
});
it('Should build labels using the default template', function() { it('Should build labels using the default template', function() {
var scaleID = 'myScale'; var scaleID = 'myScale';