Skip to content

Commit

Permalink
test: update test case
Browse files Browse the repository at this point in the history
  • Loading branch information
zombieJ committed Jun 28, 2023
1 parent 4c6e814 commit 3d2d9e3
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
10 changes: 1 addition & 9 deletions src/Image.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import type { ImageElementProps } from './interface';
import type { PreviewProps, ToolbarRenderInfoType } from './Preview';
import Preview from './Preview';
import PreviewGroup from './PreviewGroup';
import { isImageValid } from './util';

export interface ImagePreviewType
extends Omit<
Expand Down Expand Up @@ -66,15 +67,6 @@ interface CompoundedComponent<P> extends React.FC<P> {

type ImageStatus = 'normal' | 'error' | 'loading';

function isImageValid(src) {
return new Promise(resolve => {
const img = document.createElement('img');
img.onerror = () => resolve(false);
img.onload = () => resolve(true);
img.src = src;
});
}

const ImageInternal: CompoundedComponent<ImageProps> = props => {
const {
src: imgSrc,
Expand Down
8 changes: 8 additions & 0 deletions src/util.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export function isImageValid(src: string) {
return new Promise(resolve => {
const img = document.createElement('img');
img.onerror = () => resolve(false);
img.onload = () => resolve(true);
img.src = src;
});
}
23 changes: 14 additions & 9 deletions tests/fallback.test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
import { act, fireEvent, render } from '@testing-library/react';
import React from 'react';
import { render, fireEvent, act } from '@testing-library/react';
import Image from '../src';

jest.mock('../src/util', () => {
const { isImageValid, ...rest } = jest.requireActual('../src/util');

return {
...rest,
isImageValid: () => Promise.resolve(false),
};
});

describe('Fallback', () => {
beforeEach(() => {
jest.useFakeTimers();
Expand All @@ -13,19 +22,15 @@ describe('Fallback', () => {

const fallback = 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png';

it('Fallback correct', () => {
it('Fallback correct', async () => {
const { container } = render(<Image src="abc" fallback={fallback} />);

act(() => {
jest.runAllTimers();
});

fireEvent.click(container.querySelector('.rc-image'));
act(() => {
await act(async () => {
jest.runAllTimers();
await Promise.resolve();
});

expect(container.querySelector('.rc-image-preview')).toBeFalsy();
expect(container.querySelector('img').src).toEqual(fallback);
});

it('should not show preview', () => {
Expand Down

0 comments on commit 3d2d9e3

Please sign in to comment.