Skip to content

Commit 538d059

Browse files
committed
test: add bar hover tests
1 parent 6455dd1 commit 538d059

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed

test/jasmine/tests/bar_test.js

+99
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,105 @@ describe('A bar plot', function() {
676676
});
677677
});
678678

679+
describe('bar hover', function() {
680+
'use strict';
681+
682+
var gd;
683+
684+
var TOL = 0.1;
685+
686+
beforeAll(function() {
687+
jasmine.addMatchers(customMatchers);
688+
});
689+
690+
afterEach(destroyGraphDiv);
691+
692+
function getPointData(gd) {
693+
var cd = gd.calcdata,
694+
subplot = gd._fullLayout._plots.xy;
695+
696+
return {
697+
index: false,
698+
distance: 20,
699+
cd: cd[0],
700+
trace: cd[0][0].trace,
701+
xa: subplot.xaxis,
702+
ya: subplot.yaxis
703+
};
704+
}
705+
706+
function _hover(gd, xval, yval, closest) {
707+
var pointData = getPointData(gd);
708+
var pt = Bar.hoverPoints(pointData, xval, yval, closest)[0];
709+
710+
return {
711+
index: pt.index,
712+
color: pt.color,
713+
pos: [pt.x0, pt.x1, pt.y0, pt.y1, pt.xLabelVal, pt.yLabelVal]
714+
};
715+
}
716+
717+
describe('with orientation *v*', function() {
718+
beforeAll(function(done) {
719+
gd = createGraphDiv();
720+
721+
var mock = Lib.extendDeep({}, require('@mocks/11.json'));
722+
723+
Plotly.plot(gd, mock.data, mock.layout).then(done);
724+
});
725+
726+
it('should return the correct hover point data (case x)', function() {
727+
var out = _hover(gd, 0, 0, 'x');
728+
729+
expect(out.index).toEqual(0);
730+
expect(out.color).toEqual('rgb(255, 102, 97)');
731+
expect(out.pos).toBeCloseToArray([
732+
11.87, 106.8, 152.76, 152.76, 0, 13.23
733+
], TOL);
734+
});
735+
736+
it('should return the correct hover point data (case closest)', function() {
737+
var out = _hover(gd, -0.2, 12, 'closest');
738+
739+
expect(out.index).toEqual(0);
740+
expect(out.color).toEqual('rgb(255, 102, 97)');
741+
expect(out.pos).toBeCloseToArray([
742+
11.87, 59.33, 152.76, 152.76, 0, 13.23
743+
], TOL);
744+
});
745+
});
746+
747+
describe('with orientation *h*', function() {
748+
beforeAll(function(done) {
749+
gd = createGraphDiv();
750+
751+
var mock = Lib.extendDeep({}, require('@mocks/bar_attrs_group_norm.json'));
752+
753+
Plotly.plot(gd, mock.data, mock.layout).then(done);
754+
});
755+
756+
it('should return the correct hover point data (case y)', function() {
757+
var out = _hover(gd, 185.645, 0.15, 'y');
758+
759+
expect(out.index).toEqual(0);
760+
expect(out.color).toEqual('#1f77b4');
761+
expect(out.pos).toBeCloseToArray([
762+
182.88, 182.88, 214.5, 170.5, 75, 0
763+
], TOL);
764+
});
765+
766+
it('should return the correct hover point data (case closest)', function() {
767+
var out = _hover(gd, 135.88, -0.15, 'closest');
768+
769+
expect(out.index).toEqual(0);
770+
expect(out.color).toEqual('#1f77b4');
771+
expect(out.pos).toBeCloseToArray([
772+
182.88, 182.88, 214.5, 192.5, 75, 0
773+
], TOL);
774+
});
775+
});
776+
777+
});
679778

680779
function mockBarPlot(dataWithoutTraceType, layout) {
681780
var traceTemplate = { type: 'bar' };

0 commit comments

Comments
 (0)