import { fireEvent } from "@testing-library/react-native" import { renderWithWrappersTL } from "app/tests/renderWithWrappers" import React from "react" import { Input } from "./Input" describe("Input", () => { const testID = "input" it("renders an instance of native TextInput", () => { const { getByTestId } = renderWithWrappersTL() expect(getByTestId(testID).type).toEqual("TextInput") }) it("uses correct font family", () => { const { getByTestId } = renderWithWrappersTL() expect(getByTestId(testID).props.style[0].fontFamily).toEqual("Unica77LL-Regular") }) it("mutates given text as value", () => { const { getByTestId, getByDisplayValue } = renderWithWrappersTL() fireEvent.changeText(getByTestId(testID), "mockStr") getByDisplayValue("mockStr") }) it("Shows an error message when input has an error", () => { const { getByText } = renderWithWrappersTL() getByText("input has an error") }) it("should render the clear button when input is not empty and pressing it should clear the input", () => { const { getByDisplayValue, queryByDisplayValue, getByPlaceholderText, getByText, getByA11yLabel, } = renderWithWrappersTL() // placeholder is rendered getByPlaceholderText("USD") // description is rendered getByText("Input") fireEvent(getByPlaceholderText("USD"), "onChangeText", "Banksy") getByDisplayValue("Banksy") getByA11yLabel("Clear input button") fireEvent.press(getByA11yLabel("Clear input button")) expect(queryByDisplayValue("Banksy")).toBeFalsy() }) it("should show the correct show/hide password icon", () => { const { getByText, getByPlaceholderText, queryByA11yLabel, getByA11yLabel } = renderWithWrappersTL() getByText("Password") getByPlaceholderText("password") getByA11yLabel("show password button") fireEvent(getByPlaceholderText("password"), "onChangeText", "123456") fireEvent.press(getByA11yLabel("show password button")) expect(queryByA11yLabel("show password button")).toBeFalsy() getByA11yLabel("hide password button") fireEvent.press(getByA11yLabel("hide password button")) expect(queryByA11yLabel("hide password button")).toBeFalsy() getByA11yLabel("show password button") }) })