@datarailsshared/dr_renderer 1.2.453 → 1.2.455

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,51 @@ import addInDynamicRanges from './mock/add-in-dynamic-ranges.json';
8
8
  import widgets from './mock/widgets.json';
9
9
  import initPivotTable from "../src/pivottable";
10
10
  import initDRPivotTable from "../src/dr_pivottable";
11
+ import { DrGaugeChart, GAUGE_OPTIONS_DEFAULT } from "../src/charts/dr_gauge_chart";
12
+
13
+ const mockDrChartRender = jest.fn();
14
+
15
+ const mockGaugeRange = {
16
+ low: 30,
17
+ medium: 60,
18
+ high: 90,
19
+ max: 1000
20
+ };
21
+
22
+ jest.mock('../src/charts/dr_gauge_chart', () => {
23
+ return {
24
+ DrGaugeChart: jest.fn().mockImplementation(() => {
25
+ return {
26
+ render: mockDrChartRender
27
+ };
28
+ }),
29
+ GAUGE_OPTIONS_DEFAULT: {
30
+ segments: [{
31
+ from: 0,
32
+ to: 50,
33
+ color: 'red',
34
+ title: 'Title 1'
35
+ },
36
+ {
37
+ from: 51,
38
+ to: 80,
39
+ color: 'blue',
40
+ title: 'Title 2'
41
+ },
42
+ {
43
+ from: 81,
44
+ to: 100,
45
+ color: 'green',
46
+ title: 'Title 3'
47
+ }],
48
+ goal: {
49
+ name: 'Goal',
50
+ value: 180
51
+ },
52
+ isAbsoluteValue: false
53
+ }
54
+ };
55
+ });
11
56
 
12
57
  const getHighchartsRenderer = require('../src/highcharts_renderer');
13
58
  const DataFormatter = require('../src/dataformatter');
@@ -8668,6 +8713,156 @@ describe('highcharts_renderer', () => {
8668
8713
  });
8669
8714
  });
8670
8715
 
8716
+ describe('transformOldGaugeOptions', () => {
8717
+ it('should copy default segments', () => {
8718
+ expect(highchartsRenderer.transformOldGaugeOptions({
8719
+ opt1: 1,
8720
+ opt2: '2'
8721
+ })).toEqual({
8722
+ opt1: 1,
8723
+ opt2: '2',
8724
+ segments: GAUGE_OPTIONS_DEFAULT.segments
8725
+ });
8726
+ });
8727
+
8728
+ it('should not copy default segments if it\'s already exist', () => {
8729
+ expect(highchartsRenderer.transformOldGaugeOptions({
8730
+ opt1: 1,
8731
+ opt2: '2',
8732
+ segments: []
8733
+ })).toEqual({
8734
+ opt1: 1,
8735
+ opt2: '2',
8736
+ segments: []
8737
+ });
8738
+ });
8739
+
8740
+ it('should add goal', () => {
8741
+ const res = highchartsRenderer.transformOldGaugeOptions({
8742
+ opt1: 1,
8743
+ opt2: '2',
8744
+ range: mockGaugeRange
8745
+ });
8746
+ expect(res.goal).toEqual({
8747
+ name: GAUGE_OPTIONS_DEFAULT.goal.name,
8748
+ value: mockGaugeRange.max
8749
+ });
8750
+ });
8751
+
8752
+ it('should not replace the goal if it\'s already exist', () => {
8753
+ const res = highchartsRenderer.transformOldGaugeOptions({
8754
+ opt1: 1,
8755
+ opt2: '2',
8756
+ range: mockGaugeRange,
8757
+ goal: {
8758
+ title: 'custom title',
8759
+ value: 123
8760
+ }
8761
+ });
8762
+ expect(res.goal).toEqual({
8763
+ title: 'custom title',
8764
+ value: mockGaugeRange.max
8765
+ });
8766
+ });
8767
+
8768
+ it('should prepopulate segments with the old range data', () => {
8769
+ const res = highchartsRenderer.transformOldGaugeOptions({
8770
+ opt1: 1,
8771
+ opt2: '2',
8772
+ range: {
8773
+ low: 20,
8774
+ medium: 30,
8775
+ high: 70,
8776
+ max: 200
8777
+ }
8778
+ });
8779
+ expect(res.segments).toEqual([{
8780
+ from: 0,
8781
+ to: 20,
8782
+ color: GAUGE_OPTIONS_DEFAULT.segments[0].color,
8783
+ title: GAUGE_OPTIONS_DEFAULT.segments[0].title,
8784
+ },
8785
+ {
8786
+ from: 21,
8787
+ to: 30,
8788
+ color: GAUGE_OPTIONS_DEFAULT.segments[1].color,
8789
+ title: GAUGE_OPTIONS_DEFAULT.segments[1].title
8790
+ },
8791
+ {
8792
+ from: 31,
8793
+ to: 100,
8794
+ color: GAUGE_OPTIONS_DEFAULT.segments[2].color,
8795
+ title: GAUGE_OPTIONS_DEFAULT.segments[2].title
8796
+ }]);
8797
+ });
8798
+
8799
+ it('should remove old range object', () => {
8800
+ const res = highchartsRenderer.transformOldGaugeOptions({
8801
+ opt1: 1,
8802
+ opt2: '2',
8803
+ range: {
8804
+ low: 20,
8805
+ medium: 30,
8806
+ high: 70,
8807
+ max: 200
8808
+ }
8809
+ });
8810
+ expect(res.range).toBeUndefined();
8811
+ });
8812
+ });
8813
+
8814
+ describe('Function ptRenderGaugeEnhanced', () => {
8815
+ it('should render a gauge chart', () => {
8816
+ const optsMock = {
8817
+ chartOptions: {
8818
+ opt3: 'opt3'
8819
+ }
8820
+ };
8821
+
8822
+ const transformedOptsMock = {
8823
+ opt1: 'opt1',
8824
+ opt2: 'opt2'
8825
+ }
8826
+
8827
+ spyOn(highchartsRenderer, 'transformOldGaugeOptions').and.returnValue(transformedOptsMock);
8828
+
8829
+ const pivotDataMock = {
8830
+ getColKeys: () => [[1], [2], [3]],
8831
+ };
8832
+
8833
+ highchartsRenderer.ptRenderGaugeEnhanced(pivotDataMock, optsMock);
8834
+ expect(highchartsRenderer.transformOldGaugeOptions).toHaveBeenCalledWith({
8835
+ opt3: 'opt3'
8836
+ });
8837
+ expect(mockDrChartRender).toHaveBeenCalled();
8838
+ });
8839
+
8840
+ it('should render a gauge chart', () => {
8841
+ const optsMock = {
8842
+ chartOptions: {
8843
+ opt3: 'opt3'
8844
+ }
8845
+ };
8846
+
8847
+ const transformedOptsMock = {
8848
+ opt1: 'opt1',
8849
+ opt2: 'opt2'
8850
+ }
8851
+
8852
+ spyOn(highchartsRenderer, 'transformOldGaugeOptions').and.returnValue(transformedOptsMock);
8853
+
8854
+ const pivotDataMock = {
8855
+ getColKeys: () => [[1], [2], [3]],
8856
+ };
8857
+
8858
+ highchartsRenderer.ptRenderGaugeEnhanced(pivotDataMock, optsMock);
8859
+ expect(highchartsRenderer.transformOldGaugeOptions).toHaveBeenCalledWith({
8860
+ opt3: 'opt3'
8861
+ });
8862
+ expect(mockDrChartRender).toHaveBeenCalled();
8863
+ });
8864
+ });
8865
+
8671
8866
  describe('Function ptRenderGauge', () => {
8672
8867
 
8673
8868
  const pivotDataMock = {