8000 sort categories by value: DRY up tests · maun/plotly.js@ad1b658 · GitHub
[go: up one dir, main page]

Skip to content

Commit ad1b658

Browse files
committed
sort categories by value: DRY up tests
1 parent bab11d7 commit ad1b658

File tree

1 file changed

+57
-119
lines changed

1 file changed

+57
-119
lines changed

test/jasmine/tests/calcdata_test.js

Lines changed: 57 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -944,12 +944,7 @@ describe('calculated data and points', function() {
944944
it('sorts ' + trace.type + ' by ' + categoryorder, function(done) {
945945
var baseMock = {
946946
data: [makeData(trace.type, cat, data)],
947-
layout: {
948-
xaxis: {
949-
type: 'category',
950-
categoryorder: categoryorder
951-
}
952-
}
947+
layout: { xaxis: { type: 'category', categoryorder: categoryorder}}
953948
};
954949
var mock = Lib.extendDeep({}, baseMock);
955950

@@ -971,154 +966,97 @@ describe('calculated data and points', function() {
971966
});
972967
});
973968

974-
it('aggregates all values in trace type ' + trace.type, function(done) {
975-
var type = trace.type;
976-
var baseMock = {
977-
data: [makeData(trace.type, cat, data)],
978-
layout: {
979-
xaxis: {
980-
type: 'category',
981-
categoryorder: 'value ascending'
982-
}
983-
}
984-
};
969+
function checkAggregatedValue(baseMock, expectedAgg, done) {
985970
var mock = Lib.extendDeep({}, baseMock);
986971

987-
if(type.match(/histogram/)) {
988-
mock.data[0].x.push('a');
989-
mock.data[0].y.push(7);
972+
if(mock.data[0].type.match(/histogram/)) {
973+
for(i = 0; i < mock.data.length; i++) {
974+
mock.data[i].x.push('a');
975+
mock.data[i].y.push(7);
976+
}
990977
}
991978

992979
Plotly.newPlot(gd, mock)
993980
.then(function(gd) {
994-
var expectedAgg = [['a', 7], ['b', 2], ['c', 3]];
995-
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', 14], ['b', 4], ['c', 6]];
996-
if(type.match(/histogram/)) expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
997981
var agg = gd._fullLayout.xaxis._categoriesAggregatedValue.sort(function(a, b) {
998982
return a[0] > b[0];
999983
});
1000984
expect(agg).toEqual(expectedAgg);
1001985
})
1002986
.catch(failTest)
1003987
.then(done);
988+
}
989+
990+
it('aggregates all values in trace type ' + trace.type, function(done) {
991+
var baseMock = {
992+
data: [makeData(trace.type, cat, data)],
993+
layout: { xaxis: { type: 'category', categoryorder: 'value ascending'}}
994+
};
995+
var expectedAgg = [['a', 7], ['b', 2], ['c', 3]];
996+
if(trace.type === 'ohlc' || trace.type === 'candlestick') expectedAgg = [['a', 14], ['b', 4], ['c', 6]];
997+
if(trace.type.match(/histogram/)) expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
998+
999+
checkAggregatedValue(baseMock, expectedAgg, done);
10041000
});
10051001

1006-
it('aggregates all values across multiple traces of type ' + trace.type, function(done) {
1002+
it('aggregates sum values across multiple traces of type ' + trace.type, function(done) {
10071003
var type = trace.type;
1004+
var data2 = [5, 4, 2];
10081005
var baseMock = {
1009-
data: [makeData(type, cat, data)],
1010-
layout: {
1011-
xaxis: {
1012-
type: 'category',
1013-
categoryorder: 'value ascending'
1014-
}
1015-
}
1006+
data: [makeData(type, cat, data), makeData(type, cat, data2)],
1007+
layout: { xaxis: { type: 'category', categoryorder: 'value ascending'}}
10161008
};
1017-
var mock = Lib.extendDeep({}, baseMock);
1009+
var expectedAgg = [['a', data[0] + data2[0]], ['b', data[1] + data2[1]], ['c', data[2] + data2[2]]];
1010+
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', 2 * expectedAgg[0][1]], ['b', 2 * expectedAgg[1][1]], ['c', 2 * expectedAgg[2][1]]];
1011+
if(type.match(/histogram/)) expectedAgg = [['a', 4], ['b', 2], ['c', 2]];
10181012

1013+
checkAggregatedValue(baseMock, expectedAgg, done);
1014+
});
1015+
1016+
it('aggregates sum values across visible traces of type ' + trace.type, function(done) {
1017+
var type = trace.type;
10191018
var data2 = [5, 4, 2];
1020-
mock.data.push(makeData(type, cat, data2));
1021-
mock.data[1].type = type;
1022-
1023-
if(type.match(/histogram/)) {
1024-
mock.data[0].x.push('a');
1025-
mock.data[0].y.push(7);
1026-
mock.data[1].x.push('a');
1027-
mock.data[1].y.push(7);
1028-
}
1019+
var baseMock = {
1020+
data: [makeData(type, cat, data), makeData(type, cat, data2)],
1021+
layout: { xaxis: { type: 'category', categoryorder: 'value ascending'}}
1022+
};
1023+
// Hide second trace
1024+
baseMock.data[1].visible = 'legendonly';
1025+
var expectedAgg = [['a', data[0]], ['b', data[1]], ['c', data[2]]];
1026+
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', 2 * expectedAgg[0][1]], ['b', 2 * expectedAgg[1][1]], ['c', 2 * expectedAgg[2][1]]];
1027+
if(type.match(/histogram/)) expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
10291028

1030-
Plotly.newPlot(gd, mock)
1031-
.then(function(gd) {
1032-
var expectedAgg = [['a', data[0] + data2[0]], ['b', data[1] + data2[1]], ['c', data[2] + data2[2]]];
1033-
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', 2 * expectedAgg[0][1]], ['b', 2 * expectedAgg[1][1]], ['c', 2 * expectedAgg[2][1]]];
1034-
if(type.match(/histogram/)) expectedAgg = [['a', 4], ['b', 2], ['c', 2]];
1035-
var agg = gd._fullLayout.xaxis._categoriesAggregatedValue.sort(function(a, b) {
1036-
return a[0] > b[0];
1037-
});
1038-
expect(agg).toEqual(expectedAgg);
1039-
})
1040-
.catch(failTest)
1041-
.then(done);
1029+
checkAggregatedValue(baseMock, expectedAgg, done);
10421030
});
10431031

10441032
it('finds the minimum value per category across multiple traces of type ' + trace.type, function(done) {
10451033
var type = trace.type;
1034+
var data2 = [5, 4, 2];
10461035
var baseMock = {
1047-
data: [makeData(trace.type, cat, data)],
1048-
layout: {
1049-
xaxis: {
1050-
type: 'category',
1051-
categoryorder: 'min ascending'
1052-
}
1053-
}
1036+
data: [makeData(type, cat, data), makeData(type, cat, data2)],
1037+
layout: { xaxis: { type: 'category', categoryorder: 'min ascending'}}
10541038
};
1055-
var mock = Lib.extendDeep({}, baseMock);
1056-
1057-
1058-
var data2 = [5, 4, 1];
1059-
mock.data.push(makeData(trace.type, cat, data2));
1060-
mock.data[1].type = type;
1039+
var expectedAgg = [['a', Math.min(data[0], data2[0])], ['b', Math.min(data[1], data2[1])], ['c', Math.min(data[2], data2[2])]];
1040+
// if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', expectedAgg[0][1]], ['b', expectedAgg[1][1]], ['c', expectedAgg[2][1]]];
1041+
if(trace.categories.indexOf('2dMap') !== -1) expectedAgg = [['a', 0], ['b', 0], ['c', 0]];
1042+
if(type === 'histogram') expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
10611043

1062-
if(type.match(/histogram/)) {
1063-
mock.data[0].x.push('a');
1064-
mock.data[0].y.push(7);
1065-
mock.data[1].x.push('a');
1066-
mock.data[1].y.push(7);
1067-
}
1068-
1069-
Plotly.newPlot(gd, mock)
1070-
.then(function(gd) {
1071-
var expectedAgg = [['a', Math.min(data[0], data2[0])], ['b', Math.min(data[1], data2[1])], ['c', Math.min(data[2], data2[2])]];
1072-
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', expectedAgg[0][1]], ['b', expectedAgg[1][1]], ['c', expectedAgg[2][1]]];
1073-
if(trace.categories.indexOf('2dMap') !== -1) expectedAgg = [['a', 0], ['b', 0], ['c', 0]];
1074-
if(type === 'histogram') expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
1075-
var agg = gd._fullLayout.xaxis._categoriesAggregatedValue.sort(function(a, b) {
1076-
return a[0] > b[0];
1077-
});
1078-
expect(agg).toEqual(expectedAgg);
1079-
})
1080-
.catch(failTest)
1081-
.then(done);
1044+
checkAggregatedValue(baseMock, expectedAgg, done);
10821045
});
10831046

10841047
it('finds the maximum value per category across multiple traces of type ' + trace.type, function(done) {
10851048
var type = trace.type;
1049+
var data2 = [5, 4, 2];
10861050
var baseMock = {
1087-
data: [makeData(trace.type, cat, data)],
1088-
layout: {
1089-
xaxis: {
1090-
type: 'category'< 8000 span class=pl-kos>,
1091-
categoryorder: 'max ascending'
1092-
}
1093-
}
1051+
data: [makeData(type, cat, data), makeData(type, cat, data2)],
1052+
layout: { xaxis: { type: 'category', categoryorder: 'max ascending'}}
10941053
};
1095-
var mock = Lib.extendDeep({}, baseMock);
1096-
1054+
var expectedAgg = [['a', Math.max(data[0], data2[0])], ['b', Math.max(data[1], data2[1])], ['c', Math.max(data[2], data2[2])]];
1055+
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', expectedAgg[0][1]], ['b', expectedAgg[1][1]], ['c', expectedAgg[2][1]]];
1056+
// if(trace.categories.indexOf('2dMap') !== -1) expectedAgg = [['a', 0], ['b', 0], ['c', 0]];
1057+
if(type.match(/histogram/)) expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
10971058

1098-
var data2 = [5, 4, 1];
1099-
mock.data.push(makeData(trace.type, cat, data2));
1100-
mock.data[1].type = type;
1101-
1102-
if(type.match(/histogram/)) {
1103-
mock.data[0].x.push('a');
1104-
mock.data[0].y.push(7);
1105-
mock.data[1].x.push('a');
1106-
mock.data[1].y.push(7);
1107-
}
1108-
1109-
Plotly.newPlot(gd, mock)
1110-
.then(function(gd) {
1111-
var expectedAgg = [['a', Math.max(data[0], data2[0])], ['b', Math.max(data[1], data2[1])], ['c', Math.max(data[2], data2[2])]];
1112-
if(type === 'ohlc' || type === 'candlestick') expectedAgg = [['a', expectedAgg[0][1]], ['b', expectedAgg[1][1]], ['c', expectedAgg[2][1]]];
1113-
// if(trace.categories.indexOf('2dMap') !== -1) expectedAgg = [['a', 0], ['b', 0], ['c', 0]];
1114-
if(type.match(/histogram/)) expectedAgg = [['a', 2], ['b', 1], ['c', 1]];
1115-
var agg = gd._fullLayout.xaxis._categoriesAggregatedValue.sort(function(a, b) {
1116-
return a[0] > b[0];
1117-
});
1118-
expect(agg).toEqual(expectedAgg);
1119-
})
1120-
.catch(failTest)
1121-
.then(done);
1059+
checkAggregatedValue(baseMock, expectedAgg, done);
11221060
});
11231061
});
11241062
});

0 commit comments

Comments
 (0)
0