import { h } from 'preact';
import { renderHook, act } from '@testing-library/preact-hooks';
import { useContext } from 'preact/hooks';
import { store, ConnectStateProvider } from '../ConnectStateProvider';
// There is no need to test for accessibility for the store or ConnectStateProvider as they
// relate only to state management.
describe('', () => {
it('should initialize Connect state with given initialState', async () => {
const initialState = {
channel: {
channelId: 1,
channelName: 'test',
},
showSidecar: false,
};
const wrapper = ({ children }) => (
state}
>
{children}
);
const { result } = renderHook(() => useContext(store), { wrapper });
expect(result.current.state).toEqual(initialState);
});
it('should dispatch an action', async () => {
const reducer = jest.fn((state, _action) => {
return state;
});
const action = { type: 'some action' };
const initialState = {
channel: {
channelId: 1,
channelName: 'test',
},
showSidecar: false,
};
const wrapper = ({ children }) => (
{children}
);
const { result } = renderHook(() => useContext(store), { wrapper });
act(() => {
result.current.dispatch(action);
});
expect(reducer).toHaveBeenCalledTimes(1);
expect(reducer).toHaveBeenCalledWith(initialState, action);
});
});