diff --git a/packages/components/src/focal-point-picker/test/index.js b/packages/components/src/focal-point-picker/test/index.tsx similarity index 75% rename from packages/components/src/focal-point-picker/test/index.js rename to packages/components/src/focal-point-picker/test/index.tsx index d5c7946cffd86..1eccced32c70a 100644 --- a/packages/components/src/focal-point-picker/test/index.js +++ b/packages/components/src/focal-point-picker/test/index.tsx @@ -8,6 +8,19 @@ import userEvent from '@testing-library/user-event'; * Internal dependencies */ import Picker from '..'; +import type { FocalPointPickerProps } from '../types'; + +type Log = { name: string; args: unknown[] }; +type EventLogger = ( name: string, args: unknown[] ) => void; + +const props: FocalPointPickerProps = { + onChange: jest.fn(), + url: 'test-url', + value: { + x: 0, + y: 0, + }, +}; describe( 'FocalPointPicker', () => { describe( 'focus and blur', () => { @@ -16,7 +29,7 @@ describe( 'FocalPointPicker', () => { const mockOnChange = jest.fn(); - render( ); + render( ); const draggableArea = screen.getByRole( 'button' ); @@ -32,6 +45,7 @@ describe( 'FocalPointPicker', () => { render( { describe( 'drag gestures', () => { it( 'should call onDragStart, onDrag, onDragEnd and onChange in that order', () => { - const logs = []; - const eventLogger = ( name, args ) => logs.push( { name, args } ); + const logs: Log[] = []; + const eventLogger: EventLogger = ( name, args ) => + logs.push( { name, args } ); const events = [ 'onDragStart', 'onDrag', 'onDragEnd', 'onChange' ]; - const handlers = {}; + const handlers: { [ key: string ]: EventLogger } = {}; events.forEach( ( name ) => { handlers[ name ] = ( ...all ) => eventLogger( name, all ); } ); - render( ); + render( ); const dragArea = screen.getByRole( 'button' ); @@ -92,6 +107,7 @@ describe( 'FocalPointPicker', () => { render( { @@ -118,12 +134,12 @@ describe( 'FocalPointPicker', () => { describe( 'controllability', () => { it( 'should update value from props', () => { const { rerender } = render( - + ); const xInput = screen.getByRole( 'spinbutton', { name: 'Focal point left position', - } ); - rerender( ); + } ) as HTMLButtonElement; + rerender( ); expect( xInput.value ).toBe( '93' ); } ); it( 'call onChange with the expected values', async () => { @@ -131,7 +147,11 @@ describe( 'FocalPointPicker', () => { const spyChange = jest.fn(); render( - + ); // Focus and press arrow up const dragArea = screen.getByRole( 'button' ); @@ -151,20 +171,27 @@ describe( 'FocalPointPicker', () => { const onChangeSpy = jest.fn(); render( ); - expect( - screen.getByRole( 'spinbutton', { - name: 'Focal point left position', - } ).value + ( + screen.getByRole( 'spinbutton', { + name: 'Focal point left position', + } ) as HTMLButtonElement + ).value ).toBe( '10' ); expect( - screen.getByRole( 'spinbutton', { - name: 'Focal point top position', - } ).value + ( + screen.getByRole( 'spinbutton', { + name: 'Focal point top position', + } ) as HTMLButtonElement + ).value ).toBe( '20' ); expect( onChangeSpy ).not.toHaveBeenCalled(); } ); diff --git a/packages/components/src/focal-point-picker/test/media.js b/packages/components/src/focal-point-picker/test/media.tsx similarity index 63% rename from packages/components/src/focal-point-picker/test/media.js rename to packages/components/src/focal-point-picker/test/media.tsx index 25296424cf65e..e2c03968f795d 100644 --- a/packages/components/src/focal-point-picker/test/media.js +++ b/packages/components/src/focal-point-picker/test/media.tsx @@ -7,11 +7,22 @@ import { render, screen } from '@testing-library/react'; * Internal dependencies */ import Media from '../media'; +import type { FocalPointPickerMediaProps } from '../types'; + +type FocalPointPickerMediaTestProps = FocalPointPickerMediaProps & { + 'data-testid': string; +}; + +const props: FocalPointPickerMediaTestProps = { + alt: '', + src: '', + 'data-testid': 'media', +}; describe( 'FocalPointPicker/Media', () => { describe( 'Basic rendering', () => { it( 'should render', () => { - render( ); + render( ); expect( screen.getByTestId( 'media' ) ).toBeVisible(); } ); @@ -19,7 +30,7 @@ describe( 'FocalPointPicker/Media', () => { describe( 'Media types', () => { it( 'should render a placeholder by default', () => { - render( ); + render( ); expect( screen.getByTestId( 'media' ) ).toHaveClass( 'components-focal-point-picker__media--placeholder' @@ -28,34 +39,28 @@ describe( 'FocalPointPicker/Media', () => { it( 'should render an video if src is a video file', () => { const { rerender } = render( - + ); expect( screen.getByTestId( 'media' ).tagName ).toBe( 'VIDEO' ); - rerender( - - ); + rerender( ); expect( screen.getByTestId( 'media' ).tagName ).toBe( 'VIDEO' ); - rerender( - - ); + rerender( ); expect( screen.getByTestId( 'media' ).tagName ).toBe( 'VIDEO' ); } ); it( 'should render an image file, if not video', () => { const { rerender } = render( - + ); expect( screen.getByTestId( 'media' ).tagName ).toBe( 'IMG' ); - rerender( - - ); + rerender( ); expect( screen.getByTestId( 'media' ).tagName ).toBe( 'IMG' ); } );