Skip to content

Commit 192220b

Browse files
committed
Adds tests
1 parent 357dea8 commit 192220b

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

packages/core/src/js/feedback/FeedbackForm.types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ interface ReactNativeImageLibraryOptions {
215215
mediaType: any;
216216
}
217217

218-
interface ImagePicker {
218+
export interface ImagePicker {
219219
launchImageLibraryAsync?: (options?: ExpoImageLibraryOptions) => Promise<ImagePickerResponse>;
220220

221221
launchImageLibrary?: (options: ReactNativeImageLibraryOptions) => Promise<ImagePickerResponse>;

packages/core/test/feedback/FeedbackForm.test.tsx

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as React from 'react';
44
import { Alert } from 'react-native';
55

66
import { FeedbackForm } from '../../src/js/feedback/FeedbackForm';
7-
import type { FeedbackFormProps, FeedbackFormStyles } from '../../src/js/feedback/FeedbackForm.types';
7+
import type { FeedbackFormProps, FeedbackFormStyles, ImagePicker } from '../../src/js/feedback/FeedbackForm.types';
88

99
const mockOnFormClose = jest.fn();
1010
const mockOnAddScreenshot = jest.fn();
@@ -303,7 +303,7 @@ describe('FeedbackForm', () => {
303303
});
304304
});
305305

306-
it('calls onAddScreenshot when the screenshot button is pressed', async () => {
306+
it('calls onAddScreenshot when the screenshot button is pressed and no image picker library is integrated', async () => {
307307
const { getByText } = render(<FeedbackForm {...defaultProps} enableScreenshot={true} />);
308308

309309
fireEvent.press(getByText(defaultProps.addScreenshotButtonLabel));
@@ -313,6 +313,40 @@ describe('FeedbackForm', () => {
313313
});
314314
});
315315

316+
it('calls launchImageLibraryAsync when the expo-image-picker library is integrated', async () => {
317+
const mockLaunchImageLibrary = jest.fn().mockResolvedValue({
318+
assets: [{ fileName: "mock-image.jpg", uri: "file:///mock/path/image.jpg" }],
319+
});
320+
const mockImagePicker: jest.Mocked<ImagePicker> = {
321+
launchImageLibraryAsync: mockLaunchImageLibrary,
322+
};
323+
324+
const { getByText } = render(<FeedbackForm {...defaultProps} imagePicker={ mockImagePicker } />);
325+
326+
fireEvent.press(getByText(defaultProps.addScreenshotButtonLabel));
327+
328+
await waitFor(() => {
329+
expect(mockLaunchImageLibrary).toHaveBeenCalled();
330+
});
331+
});
332+
333+
it('calls launchImageLibrary when the react-native-image-picker library is integrated', async () => {
334+
const mockLaunchImageLibrary = jest.fn().mockResolvedValue({
335+
assets: [{ fileName: "mock-image.jpg", uri: "file:///mock/path/image.jpg" }],
336+
});
337+
const mockImagePicker: jest.Mocked<ImagePicker> = {
338+
launchImageLibrary: mockLaunchImageLibrary,
339+
};
340+
341+
const { getByText } = render(<FeedbackForm {...defaultProps} imagePicker={ mockImagePicker } />);
342+
343+
fireEvent.press(getByText(defaultProps.addScreenshotButtonLabel));
344+
345+
await waitFor(() => {
346+
expect(mockLaunchImageLibrary).toHaveBeenCalled();
347+
});
348+
});
349+
316350
it('calls onFormClose when the cancel button is pressed', () => {
317351
const { getByText } = render(<FeedbackForm {...defaultProps} />);
318352

0 commit comments

Comments
 (0)