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' );
} );