Skip to content

Commit 6d4a4f8

Browse files
committed
edit selectdirection test
- flatten the promise chain - simplify the test plot so I can better understand what *should* happen
1 parent d65ffc8 commit 6d4a4f8

File tree

1 file changed

+49
-57
lines changed

1 file changed

+49
-57
lines changed

test/jasmine/tests/select_test.js

Lines changed: 49 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -557,69 +557,61 @@ describe('@flaky Test select box and lasso in general:', function() {
557557

558558
var gd = createGraphDiv();
559559

560-
var selectPath = [[170 - 68, 100 - 96], [255 - 68, 160 - 96]];
560+
// drag around just the center point, but if we have a selectdirection we may
561+
// get either the ones to the left and right or above and below
562+
var selectPath = [[175, 175], [225, 225]];
561563

562-
Plotly.newPlot(gd, [
563-
{x: [1, 1, 1, 1, 1, 2, 2, 2, 3, 3], type: 'histogram'},
564-
{x: [1, 2, 3], y: [-1, -2, -3], type: 'bar'}
565-
], {
564+
function selectDrag() {
565+
resetEvents(gd);
566+
drag(selectPath);
567+
return selectedPromise;
568+
}
569+
570+
function assertSelectedPointNumbers(pointNumbers) {
571+
var pts = selectedData.points;
572+
expect(pts.length).toBe(pointNumbers.length);
573+
pointNumbers.forEach(function(pointNumber, i) {
574+
expect(pts[i].pointNumber).toBe(pointNumber);
575+
});
576+
}
577+
578+
Plotly.newPlot(gd, [{
579+
x: [1, 1, 1, 2, 2, 2, 3, 3, 3],
580+
y: [1, 2, 3, 1, 2, 3, 1, 2, 3],
581+
mode: 'markers'
582+
}], {
566583
width: 400,
567-
height: 300,
568-
showlegend: false,
569-
dragmode: 'select'
584+
height: 400,
585+
dragmode: 'select',
586+
margin: {l: 100, r: 100, t: 100, b: 100},
587+
xaxis: {range: [0, 4]},
588+
yaxis: {range: [0, 4]}
570589
})
571-
.then(function() {
572-
// expect(gd.fullLayout.selectdirection).toBe('any');
573-
resetEvents(gd);
574-
drag(selectPath);
575-
576-
selectedPromise.then(function() {
577-
expect(selectedData.points.length).toBe(1);
578-
expect(selectedData.points[0].x).toBe(1.8);
579-
expect(selectedData.points[0].y).toBe(3);
580-
});
590+
.then(selectDrag)
591+
.then(function() {
592+
expect(gd._fullLayout.selectdirection).toBe('any');
593+
assertSelectedPointNumbers([4]);
581594

582-
return Plotly.relayout(gd, {selectdirection: 'h'});
583-
})
584-
.then(function() {
585-
resetEvents(gd);
586-
drag(selectPath);
587-
588-
selectedPromise.then(function()
589-
{
590-
expect(selectedData.points.length).toBe(2);
591-
expect(selectedData.points[0].x).toBe(1.8);
592-
expect(selectedData.points[1].x).toBe(2.2);
593-
});
595+
return Plotly.relayout(gd, {selectdirection: 'h'});
596+
})
597+
.then(selectDrag)
598+
.then(function() {
599+
assertSelectedPointNumbers([3, 4, 5]);
594600

595-
return Plotly.relayout(gd, {selectdirection: 'v'});
596-
})
597-
.then(function() {
598-
resetEvents(gd);
599-
drag(selectPath);
600-
601-
selectedPromise.then(function()
602-
{
603-
expect(selectedData.points.length).toBe(2);
604-
expect(selectedData.points[0].x).toBe(1.8);
605-
expect(selectedData.points[1].x).toBe(2.8000000000000003);
606-
});
601+
return Plotly.relayout(gd, {selectdirection: 'v'});
602+
})
603+
.then(selectDrag)
604+
.then(function() {
605+
assertSelectedPointNumbers([1, 4, 7]);
607606

608-
return Plotly.relayout(gd, {selectdirection: 'd'});
609-
})
610-
.then(function() {
611-
resetEvents(gd);
612-
drag(selectPath);
613-
614-
selectedPromise.then(function()
615-
{
616-
expect(selectedData.points.length).toBe(2);
617-
expect(selectedData.points[0].x).toBe(1.8);
618-
expect(selectedData.points[1].x).toBe(2.2);
619-
});
620-
})
621-
.catch(fail) // hmm, we should change the name of this import to failTest, since fail is already a jasmine global, for sync failure, we're overriding it here with our async version (we've already done this in other places)
622-
.then(done);
607+
return Plotly.relayout(gd, {selectdirection: 'd'});
608+
})
609+
.then(selectDrag)
610+
.then(function() {
611+
assertSelectedPointNumbers([4]);
612+
})
613+
.catch(failTest)
614+
.then(done);
623615

624616
});
625617

0 commit comments

Comments
 (0)