Files
iNaturalistReactNative/tests/unit/components/SharedComponents/Buttons/INatIconButton.test.js
Amanda Bullington 21b9cc6a97 Update Eslint to support TypeScript (#1419)
* Add typescript parser and fix Flow errors in JS files

* Uninstall packages from react-native/eslint-config

* Fix all flow errors (or ignore them for unknowns
2024-04-18 21:35:26 -07:00

83 lines
2.2 KiB
JavaScript

import { render, screen } from "@testing-library/react-native";
import { INatIconButton } from "components/SharedComponents";
import React from "react";
describe( "INatIconButton", () => {
it( "renders correctly", () => {
render(
<INatIconButton
icon="camera"
onPress={( ) => {
// all is well
}}
accessibilityLabel="Camera"
/>
);
// Snapshot test
expect( screen ).toMatchSnapshot();
} );
it( "throws an error when it receives an inaccessibly small width", ( ) => {
// Even though the error is caught, it still gets printed to the console
// so we mock that out to avoid the wall of red text.
jest.spyOn( console, "error" );
console.error.mockImplementation( () => undefined );
expect( () => render(
<INatIconButton
icon="camera"
width={10}
onPress={() => {
// all is well
}}
/>
) ).toThrow( /width/i );
console.error.mockRestore();
} );
it( "throws an error when it receives an inaccessibly small height", ( ) => {
// Even though the error is caught, it still gets printed to the console
// so we mock that out to avoid the wall of red text.
jest.spyOn( console, "error" );
console.error.mockImplementation( () => undefined );
expect( () => render(
<INatIconButton
icon="camera"
height={10}
onPress={() => {
// all is well
}}
/>
) ).toThrow( /height/i );
console.error.mockRestore();
} );
} );
it( "should be accessible if accessibility label is passes as props", ( ) => {
expect(
<INatIconButton
icon="camera"
onPress={jest.fn( )}
accessibilityLabel="Navigate to camera"
/>
).toBeAccessible( );
} );
it( "throws an error when no accessibility label is passed into props", ( ) => {
// Even though the error is caught, it still gets printed to the console
// so we mock that out to avoid the wall of red text.
jest.spyOn( console, "error" );
console.error.mockImplementation( () => undefined );
expect( () => render(
<INatIconButton
icon="camera"
/>
) ).toThrow( /accessibility/i );
console.error.mockRestore( );
} );