Skip to content

Commit 9513334

Browse files
authored
test: add test cases (#340)
* test: fix test coverage * test: add test case for toolbarRender info.image * test: more test cases
1 parent c54777b commit 9513334

File tree

3 files changed

+97
-12
lines changed

3 files changed

+97
-12
lines changed

src/hooks/useImageTransform.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@ export default function useImageTransform(
6262

6363
const resetTransform = (action: TransformAction) => {
6464
setTransform(initialTransform);
65-
if (onTransform && !isEqual(initialTransform, transform)) {
66-
onTransform({ transform: initialTransform, action });
65+
console.log('resetTransform', initialTransform, transform);
66+
if (!isEqual(initialTransform, transform)) {
67+
onTransform?.({ transform: initialTransform, action });
6768
}
6869
};
6970

tests/preview.test.tsx

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -656,13 +656,14 @@ describe('Preview', () => {
656656

657657
it('Customize preview props', () => {
658658
const src = 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png';
659-
render(
659+
const { container } = render(
660660
<Image
661661
src={src}
662662
preview={{
663663
visible: true,
664664
transitionName: 'abc',
665665
maskTransitionName: 'def',
666+
closeIcon: null,
666667
}}
667668
/>,
668669
);
@@ -673,6 +674,8 @@ describe('Preview', () => {
673674
maskTransitionName: 'def',
674675
}),
675676
);
677+
678+
expect(container.querySelector('.rc-image-close')).toBeFalsy();
676679
});
677680

678681
it('Customize Group preview props', () => {
@@ -781,16 +784,23 @@ describe('Preview', () => {
781784
});
782785

783786
it('toolbarRender', () => {
787+
const printImage = jest.fn();
784788
const { container } = render(
785789
<Image
786790
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
791+
alt="alt"
792+
width={200}
793+
height={200}
787794
preview={{
788-
toolbarRender: (_, { icons }) => (
789-
<>
790-
{icons.flipYIcon}
791-
{icons.flipXIcon}
792-
</>
793-
),
795+
toolbarRender: (_, { icons, image }) => {
796+
printImage(image);
797+
return (
798+
<>
799+
{icons.flipYIcon}
800+
{icons.flipXIcon}
801+
</>
802+
);
803+
},
794804
}}
795805
/>,
796806
);
@@ -801,6 +811,7 @@ describe('Preview', () => {
801811
});
802812

803813
expect(document.querySelectorAll('.rc-image-preview-operations-operation')).toHaveLength(2);
814+
expect(printImage).toHaveBeenCalledWith({ "alt": "alt", "height": 200, "url": "https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png", "width": 200 });
804815
});
805816

806817
it('onTransform should be triggered when transform change', () => {
@@ -819,13 +830,13 @@ describe('Preview', () => {
819830

820831
expect(document.querySelector('.rc-image-preview')).toBeTruthy();
821832

822-
fireEvent.click(document.querySelectorAll('.rc-image-preview-operations-operation')[0]);
833+
fireEvent.click(document.querySelector('.rc-image-preview-operations-operation-flipY'));
823834
act(() => {
824835
jest.runAllTimers();
825836
});
826837

827-
expect(onTransform).toBeCalledTimes(1);
828-
expect(onTransform).toBeCalledWith({
838+
expect(onTransform).toHaveBeenCalledTimes(1);
839+
expect(onTransform).toHaveBeenCalledWith({
829840
transform: {
830841
flipY: true,
831842
flipX: false,

tests/previewGroup.test.tsx

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,34 @@ describe('PreviewGroup', () => {
269269
expect(document.querySelector('.rc-image-preview-img')).toHaveAttribute('src', 'src3');
270270
});
271271

272+
it('album mode: object item', () => {
273+
const { container } = render(
274+
<Image.PreviewGroup items={[{
275+
src: 'src1',
276+
}, {
277+
src: 'src2',
278+
}, {
279+
src: 'src3',
280+
}]}>
281+
<Image src="src1" />
282+
</Image.PreviewGroup>,
283+
);
284+
285+
expect(container.querySelectorAll('.rc-image')).toHaveLength(1);
286+
287+
fireEvent.click(container.querySelector('.rc-image'));
288+
act(() => {
289+
jest.runAllTimers();
290+
});
291+
expect(document.querySelector('.rc-image-preview-img')).toHaveAttribute('src', 'src1');
292+
293+
fireEvent.click(document.querySelector('.rc-image-preview-switch-right'));
294+
expect(document.querySelector('.rc-image-preview-img')).toHaveAttribute('src', 'src2');
295+
296+
fireEvent.click(document.querySelector('.rc-image-preview-switch-right'));
297+
expect(document.querySelector('.rc-image-preview-img')).toHaveAttribute('src', 'src3');
298+
});
299+
272300
it('should keep order', async () => {
273301
const Demo = ({ firstUrl }: { firstUrl: string }) => {
274302
return (
@@ -295,4 +323,49 @@ describe('PreviewGroup', () => {
295323
document.querySelector<HTMLImageElement>('.rc-image-preview-img-wrapper img')!.src,
296324
).toEqual('http://second/img.png');
297325
});
326+
327+
it('onTransform should be triggered when switch', () => {
328+
const onTransform = jest.fn();
329+
render(
330+
<Image.PreviewGroup preview={{ visible: true, onTransform }} items={[{
331+
src: 'src1',
332+
}, {
333+
src: 'src2',
334+
}, {
335+
src: 'src3',
336+
}]} />,
337+
);
338+
fireEvent.click(document.querySelector('.rc-image-preview-operations-operation-flipY'));
339+
act(() => {
340+
jest.runAllTimers();
341+
});
342+
expect(onTransform).toHaveBeenCalledTimes(1);
343+
expect(onTransform).toHaveBeenLastCalledWith({
344+
transform: {
345+
flipY: true,
346+
flipX: false,
347+
rotate: 0,
348+
scale: 1,
349+
x: 0,
350+
y: 0,
351+
},
352+
action: 'flipY',
353+
});
354+
fireEvent.click(document.querySelector('.rc-image-preview-switch-right'));
355+
act(() => {
356+
jest.runAllTimers();
357+
});
358+
expect(onTransform).toHaveBeenCalledTimes(2);
359+
expect(onTransform).toHaveBeenLastCalledWith({
360+
transform: {
361+
flipY: false,
362+
flipX: false,
363+
rotate: 0,
364+
scale: 1,
365+
x: 0,
366+
y: 0,
367+
},
368+
action: 'next',
369+
});
370+
});
298371
});

0 commit comments

Comments
 (0)