import { renderHook } from '@testing-library/react-native'; import { useGraphData } from '../../component/charts/use-graph-data'; import { GraphData, GraphProps } from '../../component/charts/graph-types'; describe('useGraphData', () => { it('should return correctly processed data from convertToGraphData', () => { // mock values const mockGraphData: GraphData = { xValues: ['full hit', '3/4 ball ball', '1/2 ball'], yValues: [ { key: 'left', values: [10, 20, 30] }, { key: 'right', values: [40, 50, 60] } ] }; const mockProps: Partial = { yAxisProps: { maxLeftYAxisValue: 30, maxRightYAxisValue: 60, selectedLeftYAxisLabel: 'left', selectedRightYAxisLabel: 'right', formatRightYAxisLabel: (value) => `${value}%`, formatLeftYAxisLabel: (value) => `${value}%` } }; const { result } = renderHook(() => useGraphData(mockGraphData, mockProps)); // values expected const expectedYData = [ { data: [{ value: 33.33 }, { value: 66.67 }, { value: 100 }], svg: { fill: 'transparent' }, }, { data: [{ value: 66.67 }, { value: 83.33 }, { value: 100 }], svg: { fill: 'transparent' }, }, ]; const expectedLeftLabels = { key: 'left', values: [10, 20, 30] }; const expectedRightLabels = { key: 'right', values: [40, 50, 60] }; expect(result.current).toBeDefined(); expect(result.current.xValues).toEqual(['full hit', '3/4 ball ball', '1/2 ball']); result.current.yData.forEach((yDataItem, index) => { yDataItem.data.forEach((dataItem, dataIndex) => { expect(dataItem.value).toBeCloseTo(expectedYData[index].data[dataIndex].value, 2); }); }); expect(result.current.yAxisLeftLabels).toEqual(expectedLeftLabels); expect(result.current.yAxisRightLabels).toEqual(expectedRightLabels); expect(result.current.defaultProps.yAxisProps.selectedLeftYAxisLabel).toEqual('left'); expect(result.current.defaultProps.yAxisProps.selectedRightYAxisLabel).toEqual('right'); expect(result.current.defaultProps).toBeDefined(); }); });