diff --git a/packages/block-editor/src/components/index.native.js b/packages/block-editor/src/components/index.native.js index ac4b45af3609ca..debf5a074a07a9 100644 --- a/packages/block-editor/src/components/index.native.js +++ b/packages/block-editor/src/components/index.native.js @@ -49,6 +49,7 @@ export { default as MediaUploadProgress } from './media-upload-progress'; export { MEDIA_UPLOAD_STATE_UPLOADING, MEDIA_UPLOAD_STATE_SUCCEEDED, + MEDIA_UPLOAD_STATE_PAUSED, MEDIA_UPLOAD_STATE_FAILED, MEDIA_UPLOAD_STATE_RESET, } from './media-upload-progress/constants'; diff --git a/packages/block-library/src/media-text/test/edit.native.js b/packages/block-library/src/media-text/test/edit.native.js new file mode 100644 index 00000000000000..230005adf8768f --- /dev/null +++ b/packages/block-library/src/media-text/test/edit.native.js @@ -0,0 +1,58 @@ +/** + * External dependencies + */ +import { + addBlock, + fireEvent, + initializeEditor, + screen, + setupCoreBlocks, +} from 'test/helpers'; + +/** + * WordPress dependencies + */ +import { + requestMediaPicker, + sendMediaUpload, + subscribeMediaUpload, +} from '@wordpress/react-native-bridge'; +import { MEDIA_UPLOAD_STATE_PAUSED } from '@wordpress/block-editor'; + +let uploadCallBack; +subscribeMediaUpload.mockImplementation( ( callback ) => { + uploadCallBack = callback; +} ); +sendMediaUpload.mockImplementation( ( payload ) => { + uploadCallBack( payload ); +} ); + +setupCoreBlocks( [ 'core/media-text' ] ); + +describe( 'Media & Text block edit', () => { + it( 'should display an error message for failed video uploads', async () => { + requestMediaPicker.mockImplementation( + ( source, filter, multiple, callback ) => { + callback( { + id: 1, + url: 'file://video.mp4', + type: 'video', + } ); + } + ); + await initializeEditor(); + await addBlock( screen, 'Media & Text' ); + fireEvent.press( screen.getByText( 'Add image or video' ) ); + fireEvent.press( screen.getByText( 'Choose from device' ) ); + + sendMediaUpload( { + mediaId: 1, + state: MEDIA_UPLOAD_STATE_PAUSED, + progress: 0, + } ); + + expect( + screen.getByText( 'Failed to insert media.\nTap for more info.' ) + ).toBeVisible(); + } ); +} );