Skip to content

Commit 1be1742

Browse files
committed
add select vs pan double-click test
1 parent 20820cb commit 1be1742

File tree

1 file changed

+107
-1
lines changed

1 file changed

+107
-1
lines changed

test/jasmine/tests/select_test.js

Lines changed: 107 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,9 +612,115 @@ describe('@flaky Test select box and lasso in general:', function() {
612612
})
613613
.catch(failTest)
614614
.then(done);
615-
616615
});
617616

617+
it('should clear selected points on double click only on pan/lasso modes', function(done) {
618+
var gd = createGraphDiv();
619+
var fig = Lib.extendDeep({}, require('@mocks/0.json'));
620+
fig.data = [fig.data[0]];
621+
fig.layout.xaxis.autorange = false;
622+
fig.layout.xaxis.range = [2, 8];
623+
fig.layout.yaxis.autorange = false;
624+
fig.layout.yaxis.range = [0, 3];
625+
626+
function _assert(msg, exp) {
627+
expect(gd.layout.xaxis.range)
628+
.toBeCloseToArray(exp.xrng, 2, 'xaxis range - ' + msg);
629+
expect(gd.layout.yaxis.range)
630+
.toBeCloseToArray(exp.yrng, 2, 'yaxis range - ' + msg);
631+
632+
if(exp.selpts === null) {
633+
expect('selectedpoints' in gd.data[0])
634+
.toBe(false, 'cleared selectedpoints - ' + msg);
635+
} else {
636+
expect(gd.data[0].selectedpoints)
637+
.toBeCloseToArray(exp.selpts, 2, 'selectedpoints - ' + msg);
638+
}
639+
}
640+
641+
Plotly.plot(gd, fig).then(function() {
642+
_assert('base', {
643+
xrng: [2, 8],
644+
yrng: [0, 3],
645+
selpts: null
646+
});
647+
return Plotly.relayout(gd, 'xaxis.range', [0, 10]);
648+
})
649+
.then(function() {
650+
_assert('after xrng relayout', {
651+
xrng: [0, 10],
652+
yrng: [0, 3],
653+
selpts: null
654+
});
655+
return doubleClick(200, 200);
656+
})
657+
.then(function() {
658+
_assert('after double-click under dragmode zoom', {
659+
xrng: [2, 8],
660+
yrng: [0, 3],
661+
selpts: null
662+
});
663+
return Plotly.relayout(gd, 'dragmode', 'select');
664+
})
665+
.then(function() {
666+
_assert('after relayout to select', {
667+
xrng: [2, 8],
668+
yrng: [0, 3],
669+
selpts: null
670+
});
671+
return drag([[100, 100], [400, 400]]);
672+
})
673+
.then(function() {
674+
_assert('after selection', {
675+
xrng: [2, 8],
676+
yrng: [0, 3],
677+
selpts: [40, 41, 42, 43, 44, 45, 46, 47, 48]
678+
});
679+
return doubleClick(200, 200);
680+
})
681+
.then(function() {
682+
_assert('after double-click under dragmode select', {
683+
xrng: [2, 8],
684+
yrng: [0, 3],
685+
selpts: null
686+
});
687+
return drag([[100, 100], [400, 400]]);
688+
})
689+
.then(function() {
690+
_assert('after selection 2', {
691+
xrng: [2, 8],
692+
yrng: [0, 3],
693+
selpts: [40, 41, 42, 43, 44, 45, 46, 47, 48]
694+
});
695+
return Plotly.relayout(gd, 'dragmode', 'pan');
696+
})
697+
.then(function() {
698+
_assert('after relayout to pan', {
699+
xrng: [2, 8],
700+
yrng: [0, 3],
701+
selpts: [40, 41, 42, 43, 44, 45, 46, 47, 48]
702+
});
703+
return Plotly.relayout(gd, 'yaxis.range', [0, 20]);
704+
})
705+
.then(function() {
706+
_assert('after yrng relayout', {
707+
xrng: [2, 8],
708+
yrng: [0, 20],
709+
selpts: [40, 41, 42, 43, 44, 45, 46, 47, 48]
710+
});
711+
return doubleClick(200, 200);
712+
})
713+
.then(function() {
714+
_assert('after double-click under dragmode pan', {
715+
xrng: [2, 8],
716+
yrng: [0, 3],
717+
// N.B. does not clear selection!
718+
selpts: [40, 41, 42, 43, 44, 45, 46, 47, 48]
719+
});
720+
})
721+
.catch(failTest)
722+
.then(done);
723+
});
618724
});
619725

620726
describe('@flaky Test select box and lasso per trace:', function() {

0 commit comments

Comments
 (0)