From 9077b78a9b958cacfd2eb7e72bf6f1a7333b8d27 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 2 Feb 2024 16:32:13 +0000 Subject: [PATCH 01/11] Add jasmine test for bugfix #6780 --- test/jasmine/tests/select_test.js | 96 +++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 7c6498a4ac9..d0d0253a3cb 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1599,6 +1599,102 @@ describe('Test select box and lasso in general:', function() { }) .then(done, done.fail); }); + + it('should re-select data in all overlaying visible traces', function(done){ + var gd = createGraphDiv(); + _newPlot(gd, + [{ + x: [1, 2, 3], + y: [4, 5, 6], + name: "yaxis1 data", + type: "scatter" + }, + { + x: [2, 3, 4], + y: [40, 50, 60], + name: "yaxis2 data", + yaxis: "y2", + xaxis: "x2", + type: "scatter" + }, + { + x: [3, 4, 5], + y: [400, 500, 600], + name: "yaxis3 data", + yaxis: "y3", + type: "scatter" + }, + { + x: [4, 5, 6], + y: [1000, 2000, 3000], + name: "yaxis4 data", + yaxis: "y4", + xaxis: "x2", + type: "scatter" + } + ], { + grid: { + rows: 2, + columns: 1, + pattern: "independent" + }, + width: 800, + height: 800, + yaxis: { + showline: true, + title: { + text: "yaxis title" + } + }, + yaxis2: { + title: { + text: "yaxis2 title" + }, + showline: true + }, + yaxis3: { + title: { + text: "yaxis3 title" + }, + anchor: "free", + overlaying: "y", + showline: true, + autoshift: true + }, + yaxis4: { + title: { + text: "yaxis4 title" + }, + anchor: "free", + overlaying: "y2", + showline: true, + autoshift: true + } + }).then(function() { + return Plotly.relayout(gd, 'dragmode', 'select'); + }).then(function () { + return drag([[150, 100], [600, 250]]); + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toBe(undefined); + }).then(function() { + return drag([[600, 175], [780, 175]]); // Extend existing selection + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); + expect(gd.data[3].selectedpoints).toBe(undefined); + }).then(function() { + return drag([[150, 600], [780, 300]]); + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); + expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); + }).then(done, done.fail); + }); }); describe('Test select box and lasso per trace:', function() { From b2fa130ba91aa8d49827d57b96243ffd5a92b418 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 2 Feb 2024 16:50:36 +0000 Subject: [PATCH 02/11] Fix syntax on new select test --- test/jasmine/tests/select_test.js | 178 +++++++++++++++--------------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index d0d0253a3cb..ef370791fc7 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1600,100 +1600,100 @@ describe('Test select box and lasso in general:', function() { .then(done, done.fail); }); - it('should re-select data in all overlaying visible traces', function(done){ + it('should re-select data in all overlaying visible traces', function(done) { var gd = createGraphDiv(); - _newPlot(gd, - [{ - x: [1, 2, 3], - y: [4, 5, 6], - name: "yaxis1 data", - type: "scatter" - }, - { - x: [2, 3, 4], - y: [40, 50, 60], - name: "yaxis2 data", - yaxis: "y2", - xaxis: "x2", - type: "scatter" - }, - { - x: [3, 4, 5], - y: [400, 500, 600], - name: "yaxis3 data", - yaxis: "y3", - type: "scatter" - }, + _newPlot(gd, [{ + x: [1, 2, 3], + y: [4, 5, 6], + name: 'yaxis1 data', + type: 'scatter' + }, + { + x: [2, 3, 4], + y: [40, 50, 60], + name: 'yaxis2 data', + yaxis: 'y2', + xaxis: 'x2', + type: 'scatter' + }, + { + x: [3, 4, 5], + y: [400, 500, 600], + name: 'yaxis3 data', + yaxis: 'y3', + type: 'scatter' + }, + { + x: [4, 5, 6], + y: [1000, 2000, 3000], + name: 'yaxis4 data', + yaxis: 'y4', + xaxis: 'x2', + type: 'scatter' + } + ], { - x: [4, 5, 6], - y: [1000, 2000, 3000], - name: "yaxis4 data", - yaxis: "y4", - xaxis: "x2", - type: "scatter" - } - ], { - grid: { - rows: 2, - columns: 1, - pattern: "independent" - }, - width: 800, - height: 800, - yaxis: { - showline: true, - title: { - text: "yaxis title" - } - }, - yaxis2: { - title: { - text: "yaxis2 title" + grid: { + rows: 2, + columns: 1, + pattern: 'independent' }, - showline: true - }, - yaxis3: { - title: { - text: "yaxis3 title" + width: 800, + height: 800, + yaxis: { + showline: true, + title: { + text: 'yaxis title' + } }, - anchor: "free", - overlaying: "y", - showline: true, - autoshift: true - }, - yaxis4: { - title: { - text: "yaxis4 title" + yaxis2: { + title: { + text: 'yaxis2 title' + }, + showline: true }, - anchor: "free", - overlaying: "y2", - showline: true, - autoshift: true - } - }).then(function() { - return Plotly.relayout(gd, 'dragmode', 'select'); - }).then(function () { - return drag([[150, 100], [600, 250]]); - }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); - expect(gd.data[2].selectedpoints).toEqual([1]); - expect(gd.data[3].selectedpoints).toBe(undefined); - }).then(function() { - return drag([[600, 175], [780, 175]]); // Extend existing selection - }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); - expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toBe(undefined); - }).then(function() { - return drag([[150, 600], [780, 300]]); - }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toEqual([1, 2]); - expect(gd.data[2].selectedpoints).toEqual([1]); - expect(gd.data[3].selectedpoints).toEqual([1, 2]); - }).then(done, done.fail); + yaxis3: { + title: { + text: 'yaxis3 title' + }, + anchor: 'free', + overlaying: 'y', + showline: true, + autoshift: true + }, + yaxis4: { + title: { + text: 'yaxis4 title' + }, + anchor: 'free', + overlaying: 'y2', + showline: true, + autoshift: true + } + }).then(function() { + return Plotly.relayout(gd, 'dragmode', 'select'); + }).then(function() { + return drag([[150, 100], [600, 250]]); + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toBe(undefined); + }).then(function() { + return drag([[600, 175], [780, 175]]); // Extend existing selection + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); + expect(gd.data[3].selectedpoints).toBe(undefined); + }).then(function() { + return drag([[150, 600], [780, 300]]); + }).then(function() { + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); + }).then(done, done.fail); }); }); From 94d444da791d31ad66f743eb088e3673dab6e0fd Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 2 Feb 2024 17:08:00 +0000 Subject: [PATCH 03/11] Check selectedpoints in _fullData --- test/jasmine/tests/select_test.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index ef370791fc7..637e9697868 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1675,24 +1675,24 @@ describe('Test select box and lasso in general:', function() { }).then(function() { return drag([[150, 100], [600, 250]]); }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); - expect(gd.data[2].selectedpoints).toEqual([1]); - expect(gd.data[3].selectedpoints).toBe(undefined); + expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[1].selectedpoints).toBe(undefined); + expect(gd._fullData[2].selectedpoints).toEqual([1]); + expect(gd._fullData[3].selectedpoints).toBe(undefined); }).then(function() { return drag([[600, 175], [780, 175]]); // Extend existing selection }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); - expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toBe(undefined); + expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[1].selectedpoints).toBe(undefined); + expect(gd._fullData[2].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[3].selectedpoints).toBe(undefined); }).then(function() { return drag([[150, 600], [780, 300]]); }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toEqual([1, 2]); - expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[1].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[2].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[3].selectedpoints).toEqual([1, 2]); }).then(done, done.fail); }); }); From 5d72995ff1eaa2d3412f80f692e750881966adf5 Mon Sep 17 00:00:00 2001 From: Farkites Date: Fri, 2 Feb 2024 17:23:12 +0000 Subject: [PATCH 04/11] Revert _fullData to access selectedpoints in test --- test/jasmine/tests/select_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 637e9697868..9a2652d7cde 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1689,9 +1689,9 @@ describe('Test select box and lasso in general:', function() { }).then(function() { return drag([[150, 600], [780, 300]]); }).then(function() { - expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[0].selectedpoints).toBe(undefined); expect(gd._fullData[1].selectedpoints).toEqual([1, 2]); - expect(gd._fullData[2].selectedpoints).toEqual([1, 2]); + expect(gd._fullData[2].selectedpoints).toBe(undefined); expect(gd._fullData[3].selectedpoints).toEqual([1, 2]); }).then(done, done.fail); }); From ac2b71c00fb227834e4264e8dbb697bb658ca9ba Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 09:16:19 +0000 Subject: [PATCH 05/11] Change drag coordinates --- test/jasmine/tests/select_test.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 9a2652d7cde..f5d10ce8b5f 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1675,24 +1675,24 @@ describe('Test select box and lasso in general:', function() { }).then(function() { return drag([[150, 100], [600, 250]]); }).then(function() { - expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); - expect(gd._fullData[1].selectedpoints).toBe(undefined); - expect(gd._fullData[2].selectedpoints).toEqual([1]); - expect(gd._fullData[3].selectedpoints).toBe(undefined); + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { return drag([[600, 175], [780, 175]]); // Extend existing selection }).then(function() { - expect(gd._fullData[0].selectedpoints).toEqual([1, 2]); - expect(gd._fullData[1].selectedpoints).toBe(undefined); - expect(gd._fullData[2].selectedpoints).toEqual([1, 2]); - expect(gd._fullData[3].selectedpoints).toBe(undefined); + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); + expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { - return drag([[150, 600], [780, 300]]); + return drag([[150, 750], [780, 300]]); }).then(function() { - expect(gd._fullData[0].selectedpoints).toBe(undefined); - expect(gd._fullData[1].selectedpoints).toEqual([1, 2]); - expect(gd._fullData[2].selectedpoints).toBe(undefined); - expect(gd._fullData[3].selectedpoints).toEqual([1, 2]); + expect(gd.data[0].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(done, done.fail); }); }); From b2b84c7b2fd86b4fa4c1f57f3884b9a91483bc7b Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 09:48:42 +0000 Subject: [PATCH 06/11] Change drag coordinates for the second test --- test/jasmine/tests/select_test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index f5d10ce8b5f..0466d5b8201 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1687,12 +1687,12 @@ describe('Test select box and lasso in general:', function() { expect(gd.data[2].selectedpoints).toEqual([1, 2]); expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { - return drag([[150, 750], [780, 300]]); + return drag([[150, 600], [780, 500]]); }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toEqual([1, 2]); - expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toEqual([1, 2]); + expect(gd.data[1].selectedpoints).toEqual([1]); + expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toEqual([1]); }).then(done, done.fail); }); }); From 575b78948945a3ad0df181ff992ef61c9a5d7ace Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 12:20:35 +0000 Subject: [PATCH 07/11] Change drag coordinates for the second test --- test/jasmine/tests/select_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 0466d5b8201..6389f2068ca 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1687,11 +1687,11 @@ describe('Test select box and lasso in general:', function() { expect(gd.data[2].selectedpoints).toEqual([1, 2]); expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { - return drag([[150, 600], [780, 500]]); + return drag([[150, 300], [780, 500]]); }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); expect(gd.data[1].selectedpoints).toEqual([1]); - expect(gd.data[2].selectedpoints).toEqual([1]); + expect(gd.data[2].selectedpoints).toEqual([1, 2]); expect(gd.data[3].selectedpoints).toEqual([1]); }).then(done, done.fail); }); From c90441f1e95210b813f78cc3148242beab5f3f9e Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 12:39:17 +0000 Subject: [PATCH 08/11] Change drag coordinates to max for the second test --- test/jasmine/tests/select_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 6389f2068ca..f6bd591ef6a 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1687,7 +1687,7 @@ describe('Test select box and lasso in general:', function() { expect(gd.data[2].selectedpoints).toEqual([1, 2]); expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { - return drag([[150, 300], [780, 500]]); + return drag([[150, 800], [780, 500]]); }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); expect(gd.data[1].selectedpoints).toEqual([1]); From 8fa63598eed79aac55ff161bcd4cdca25a0de3d5 Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 13:08:35 +0000 Subject: [PATCH 09/11] Change drag coordinates for the second test --- test/jasmine/tests/select_test.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index f6bd591ef6a..ecc5b7c9a40 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1687,12 +1687,13 @@ describe('Test select box and lasso in general:', function() { expect(gd.data[2].selectedpoints).toEqual([1, 2]); expect(gd.data[3].selectedpoints).toBe(undefined); }).then(function() { - return drag([[150, 800], [780, 500]]); + return drag([[150, 600], [780, 400]]); }).then(function() { + console.log(gd.data) expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toEqual([1]); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toEqual([1]); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(done, done.fail); }); }); From f92016861298069165765940cce5b4e78cd99fa0 Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 13:35:11 +0000 Subject: [PATCH 10/11] Change order of drags --- test/jasmine/tests/select_test.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index ecc5b7c9a40..8ef74f8fccf 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1672,24 +1672,23 @@ describe('Test select box and lasso in general:', function() { } }).then(function() { return Plotly.relayout(gd, 'dragmode', 'select'); + }).then(function() { + return drag([[150, 600], [780, 400]]); + }).then(function() { + expect(gd.data[0].selectedpoints).toBe(undefined); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); + expect(gd.data[2].selectedpoints).toBe(undefined); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(function() { return drag([[150, 100], [600, 250]]); }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); + expect(gd.data[1].selectedpoints).toEqual([1, 2]); expect(gd.data[2].selectedpoints).toEqual([1]); - expect(gd.data[3].selectedpoints).toBe(undefined); + expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(function() { return drag([[600, 175], [780, 175]]); // Extend existing selection }).then(function() { - expect(gd.data[0].selectedpoints).toEqual([1, 2]); - expect(gd.data[1].selectedpoints).toBe(undefined); - expect(gd.data[2].selectedpoints).toEqual([1, 2]); - expect(gd.data[3].selectedpoints).toBe(undefined); - }).then(function() { - return drag([[150, 600], [780, 400]]); - }).then(function() { - console.log(gd.data) expect(gd.data[0].selectedpoints).toEqual([1, 2]); expect(gd.data[1].selectedpoints).toEqual([1, 2]); expect(gd.data[2].selectedpoints).toEqual([1, 2]); From fadbf4080d43e381a28c524ee0d550f1680b6b18 Mon Sep 17 00:00:00 2001 From: Farkites Date: Mon, 5 Feb 2024 14:16:02 +0000 Subject: [PATCH 11/11] Reduce height of test plot --- test/jasmine/tests/select_test.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/jasmine/tests/select_test.js b/test/jasmine/tests/select_test.js index 8ef74f8fccf..c685eaf32fd 100644 --- a/test/jasmine/tests/select_test.js +++ b/test/jasmine/tests/select_test.js @@ -1639,7 +1639,7 @@ describe('Test select box and lasso in general:', function() { pattern: 'independent' }, width: 800, - height: 800, + height: 600, yaxis: { showline: true, title: { @@ -1673,21 +1673,21 @@ describe('Test select box and lasso in general:', function() { }).then(function() { return Plotly.relayout(gd, 'dragmode', 'select'); }).then(function() { - return drag([[150, 600], [780, 400]]); + return drag([[150, 450], [650, 350]]); }).then(function() { expect(gd.data[0].selectedpoints).toBe(undefined); expect(gd.data[1].selectedpoints).toEqual([1, 2]); expect(gd.data[2].selectedpoints).toBe(undefined); expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(function() { - return drag([[150, 100], [600, 250]]); + return drag([[150, 100], [600, 200]]); }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); expect(gd.data[1].selectedpoints).toEqual([1, 2]); expect(gd.data[2].selectedpoints).toEqual([1]); expect(gd.data[3].selectedpoints).toEqual([1, 2]); }).then(function() { - return drag([[600, 175], [780, 175]]); // Extend existing selection + return drag([[600, 150], [650, 150]]); // Extend existing selection }).then(function() { expect(gd.data[0].selectedpoints).toEqual([1, 2]); expect(gd.data[1].selectedpoints).toEqual([1, 2]);