Newer
Older
import { render } from '@testing-library/react'
import { userEvent } from '@testing-library/user-event'
import { scaleLinear } from 'd3'
import { FluidType, TimeStep } from 'enums'
import { DateTime } from 'luxon'
import React from 'react'
import { Provider } from 'react-redux'
import * as chartActions from 'store/chart/chart.slice'
import { graphData } from 'tests/__mocks__/chartData.mock'
import {
createMockEcolyoStore,
mockChartState,
mockGlobalState,
} from 'tests/__mocks__/store'
import { mockXScale } from 'tests/__mocks__/xScale.mock'
import Bar from './Bar'
const mockParam = {
index: 4,
dataload: graphData.actualData[0],
compareDataload: graphData.actualData[1],
fluidType: FluidType.MULTIFLUID,
timeStep: TimeStep.DAY,
xScale: mockXScale,
yScale: scaleLinear(),
height: 20,
isSwitching: false,
isDuel: false,
}
const setSelectedDateSpy = jest.spyOn(chartActions, 'setSelectedDate')
describe('Bar component test', () => {
selectedDate: DateTime.fromISO('2020-10-01T00:00:00.000Z', {
zone: 'utc',
}),
},
})
it('should correctly render Multifluid Bar', () => {
<Provider store={store}>
<svg>
<Bar {...mockParam} />
</svg>
</Provider>
)
})
it('should correctly render Electricity Bar', () => {
<Provider store={store}>
<svg>
<Bar {...mockParam} fluidType={FluidType.ELECTRICITY} />
</svg>
</Provider>
)
<Provider store={store}>
<svg>
<Bar {...mockParam} fluidType={FluidType.WATER} />
</svg>
</Provider>
)
<Provider store={store}>
<svg>
<Bar {...mockParam} fluidType={FluidType.GAS} />
</svg>
</Provider>
)
})
it('should correctly render Bar with showCompare', () => {
<Bar {...mockParam} compare={true} />
})
it('should correctly render Bar with isSwitching', () => {
<Provider store={store}>
<svg>
<Bar {...mockParam} isSwitching={true} />
</svg>
</Provider>
)
})
it('should correctly render Bar with isDuel', () => {
<Provider store={store}>
<svg>
<Bar {...mockParam} isDuel={true} />
</svg>
</Provider>
)
it('should dispatch selected date when bar is clicked', async () => {
const { container } = render(
<Provider store={store}>
<svg>
<Bar {...mockParam} />
</svg>
</Provider>
)
await userEvent.click(container.querySelector('rect') as Element)
expect(setSelectedDateSpy).toHaveBeenCalledTimes(1)
expect(setSelectedDateSpy).toHaveBeenCalledWith(
graphData.actualData[0].date
)
})
})