From e27bdec97bca2a41a18029a6910d3ba27fe2dcc9 Mon Sep 17 00:00:00 2001 From: Josh Kelley Date: Wed, 13 Oct 2021 23:27:42 -0400 Subject: [PATCH] Add a regression test for #9653; fix `toHaveSize` usage --- test/specs/core.controller.tests.js | 2 +- test/specs/plugin.tooltip.tests.js | 42 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/test/specs/core.controller.tests.js b/test/specs/core.controller.tests.js index 48c1586a8cd..3b165b3b7dc 100644 --- a/test/specs/core.controller.tests.js +++ b/test/specs/core.controller.tests.js @@ -1926,7 +1926,7 @@ describe('Chart', function() { }); it('cleans up metasets when the chart is destroyed', function() { this.chart.destroy(); - expect(this.chart._metasets.length).toHaveSize(0); + expect(this.chart._metasets).toEqual([]); }); }); diff --git a/test/specs/plugin.tooltip.tests.js b/test/specs/plugin.tooltip.tests.js index 9cf619c5efa..ef0945d9537 100644 --- a/test/specs/plugin.tooltip.tests.js +++ b/test/specs/plugin.tooltip.tests.js @@ -1555,6 +1555,48 @@ describe('Plugin.Tooltip', function() { chart.tooltip.setActiveElements([{datasetIndex: 0, index: 0}], {x: 0, y: 0}); expect(chart.tooltip.getActiveElements()[0].element).toBe(meta.data[0]); }); + + it('should update active elements when datasets are removed and added', async function() { + var dataset = { + label: 'Dataset 1', + data: [10, 20, 30], + pointHoverBorderColor: 'rgb(255, 0, 0)', + pointHoverBackgroundColor: 'rgb(0, 255, 0)' + }; + var chart = window.acquireChart({ + type: 'line', + data: { + datasets: [dataset], + labels: ['Point 1', 'Point 2', 'Point 3'] + }, + options: { + plugins: { + tooltip: { + mode: 'nearest', + intersect: true + } + } + } + }); + + var meta = chart.getDatasetMeta(0); + var point = meta.data[1]; + var expectedPoint = jasmine.objectContaining({datasetIndex: 0, index: 1}); + + await jasmine.triggerMouseEvent(chart, 'mousemove', point); + + expect(chart.tooltip.getActiveElements()).toEqual([expectedPoint]); + + chart.data.datasets = []; + chart.update(); + + expect(chart.tooltip.getActiveElements()).toEqual([]); + + chart.data.datasets = [dataset]; + chart.update(); + + expect(chart.tooltip.getActiveElements()).toEqual([expectedPoint]); + }); }); describe('events', function() {