@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
import { Alert } from 'react-native' ;
5
5
6
6
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' ;
8
8
9
9
const mockOnFormClose = jest . fn ( ) ;
10
10
const mockOnAddScreenshot = jest . fn ( ) ;
@@ -303,7 +303,7 @@ describe('FeedbackForm', () => {
303
303
} ) ;
304
304
} ) ;
305
305
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 ( ) => {
307
307
const { getByText } = render ( < FeedbackForm { ...defaultProps } enableScreenshot = { true } /> ) ;
308
308
309
309
fireEvent . press ( getByText ( defaultProps . addScreenshotButtonLabel ) ) ;
@@ -313,6 +313,40 @@ describe('FeedbackForm', () => {
313
313
} ) ;
314
314
} ) ;
315
315
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
+
316
350
it ( 'calls onFormClose when the cancel button is pressed' , ( ) => {
317
351
const { getByText } = render ( < FeedbackForm { ...defaultProps } /> ) ;
318
352
0 commit comments