me.updateDatasets();
+ // Need to reset tooltip in case it is displayed with elements that are removed
+ // after update.
+ me.tooltip.initialize();
+
+ // Last active contains items that were previously in the tooltip.
+ // When we reset the tooltip, we need to clear it
+ me.lastActive = [];
+
// Do this before render so that any plugins that need final scale updates can use it
plugins.notify(me, 'afterUpdate');
expect(chart.tooltip._options).toEqual(jasmine.objectContaining(newTooltipConfig));
});
+ it ('should reset the tooltip on update', function() {
+ var chart = acquireChart({
+ type: 'line',
+ data: {
+ labels: ['A', 'B', 'C', 'D'],
+ datasets: [{
+ data: [10, 20, 30, 100]
+ }]
+ },
+ options: {
+ responsive: true,
+ tooltip: {
+ mode: 'nearest'
+ }
+ }
+ });
+
+ // Trigger an event over top of a point to
+ // put an item into the tooltip
+ var meta = chart.getDatasetMeta(0);
+ var point = meta.data[1];
+
+ var node = chart.canvas;
+ var rect = node.getBoundingClientRect();
+
+ var evt = new MouseEvent('mousemove', {
+ view: window,
+ bubbles: true,
+ cancelable: true,
+ clientX: rect.left + point._model.x,
+ clientY: 0
+ });
+
+ // Manually trigger rather than having an async test
+ node.dispatchEvent(evt);
+
+ // Check and see if tooltip was displayed
+ var tooltip = chart.tooltip;
+
+ expect(chart.lastActive).toEqual([point]);
+ expect(tooltip._lastActive).toEqual([]);
+
+ // Update and confirm tooltip is reset
+ chart.update();
+ expect(chart.lastActive).toEqual([]);
+ expect(tooltip._lastActive).toEqual([]);
+ });
+
it ('should update the metadata', function() {
var cfg = {
data: {