
* Add useChannels test * Fix unnecessary re-render that caused overwrite of form list * Change array diff check * Channel selection in price and weight rates is optional
89 lines
1.9 KiB
TypeScript
89 lines
1.9 KiB
TypeScript
import { ChannelData } from "@saleor/channels/utils";
|
|
import { act, renderHook } from "@testing-library/react-hooks";
|
|
|
|
import useChannels from "./useChannels";
|
|
|
|
const channels: ChannelData[] = [
|
|
{
|
|
id: "channel1",
|
|
name: "Channel 1",
|
|
variantsIds: ["variant1", "variant2"]
|
|
},
|
|
{
|
|
id: "channel2",
|
|
name: "Channel 2",
|
|
variantsIds: []
|
|
}
|
|
];
|
|
|
|
describe("useChannels", () => {
|
|
it("properly toggles channels", () => {
|
|
// Given
|
|
const { result } = renderHook(() =>
|
|
useChannels(channels, "", {
|
|
closeModal: jest.fn,
|
|
openModal: jest.fn
|
|
})
|
|
);
|
|
|
|
// When
|
|
act(() => {
|
|
result.current.channelsToggle(channels[0]);
|
|
});
|
|
|
|
act(() => {
|
|
result.current.handleChannelsConfirm();
|
|
});
|
|
|
|
// Then
|
|
expect(result.current.currentChannels).toStrictEqual([channels[1]]);
|
|
expect(result.current.currentChannels[0].id).toBe(channels[1].id);
|
|
});
|
|
it("properly removes channels", () => {
|
|
// Given
|
|
const { result } = renderHook(() =>
|
|
useChannels(channels, "", {
|
|
closeModal: jest.fn,
|
|
openModal: jest.fn
|
|
})
|
|
);
|
|
|
|
// When
|
|
act(() => {
|
|
result.current.channelsToggle(channels[0]);
|
|
});
|
|
|
|
act(() => {
|
|
result.current.channelsToggle(channels[1]);
|
|
});
|
|
|
|
act(() => {
|
|
result.current.handleChannelsConfirm();
|
|
});
|
|
|
|
// Then
|
|
expect(result.current.currentChannels).toStrictEqual([]);
|
|
});
|
|
|
|
it("doesn't not save changes if closed without confirm", () => {
|
|
// Given
|
|
const { result } = renderHook(() =>
|
|
useChannels(channels, "", {
|
|
closeModal: jest.fn,
|
|
openModal: jest.fn
|
|
})
|
|
);
|
|
|
|
// When
|
|
act(() => {
|
|
result.current.channelsToggle(channels[0]);
|
|
});
|
|
|
|
act(() => {
|
|
result.current.handleChannelsModalClose();
|
|
});
|
|
|
|
// Then
|
|
expect(result.current.currentChannels).toStrictEqual(channels);
|
|
});
|
|
});
|